summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.rst5
-rwxr-xr-xbin/nova-rootwrap4
-rw-r--r--doc/api_samples/all_extensions/extensions-get-resp.json8
-rw-r--r--doc/api_samples/all_extensions/extensions-get-resp.xml3
-rw-r--r--doc/api_samples/os-evacuate/server-evacuate-req.xml2
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json0
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml0
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json3
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml2
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json9
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml2
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json3
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml2
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json18
-rw-r--r--doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml5
-rw-r--r--doc/api_samples/os-volumes/snapshot-create-resp.json23
-rw-r--r--doc/api_samples/os-volumes/snapshot-create-resp.xml2
-rw-r--r--etc/nova/api-paste.ini15
-rw-r--r--etc/nova/rootwrap.d/baremetal-deploy-helper.filters10
-rw-r--r--nova/api/ec2/cloud.py6
-rw-r--r--nova/api/metadata/base.py4
-rw-r--r--nova/api/openstack/__init__.py110
-rw-r--r--nova/api/openstack/compute/__init__.py12
-rw-r--r--nova/api/openstack/compute/contrib/disk_config.py4
-rw-r--r--nova/api/openstack/compute/contrib/evacuate.py6
-rw-r--r--nova/api/openstack/compute/contrib/extended_floating_ips.py27
-rw-r--r--nova/api/openstack/compute/contrib/flavor_access.py12
-rw-r--r--nova/api/openstack/compute/contrib/flavormanage.py22
-rw-r--r--nova/api/openstack/compute/contrib/floating_ips.py30
-rw-r--r--nova/api/openstack/compute/contrib/simple_tenant_usage.py4
-rw-r--r--nova/api/openstack/compute/contrib/volumes.py25
-rw-r--r--nova/api/openstack/compute/flavors.py41
-rw-r--r--nova/api/openstack/compute/plugins/__init__.py0
-rw-r--r--nova/api/openstack/compute/plugins/v3/__init__.py0
-rw-r--r--nova/api/openstack/compute/plugins/v3/fixed_ips.py98
-rw-r--r--nova/api/openstack/compute/servers.py14
-rw-r--r--nova/api/openstack/compute/views/servers.py4
-rw-r--r--nova/api/openstack/extensions.py50
-rw-r--r--nova/cells/state.py4
-rw-r--r--nova/cloudpipe/pipelib.py4
-rw-r--r--nova/cmd/all.py1
-rw-r--r--nova/cmd/api.py1
-rw-r--r--nova/cmd/api_ec2.py1
-rw-r--r--nova/cmd/api_metadata.py1
-rw-r--r--nova/cmd/api_os_compute.py1
-rw-r--r--nova/cmd/baremetal_deploy_helper.py2
-rw-r--r--nova/cmd/baremetal_manage.py4
-rw-r--r--nova/cmd/cells.py1
-rw-r--r--nova/cmd/cert.py1
-rw-r--r--nova/cmd/clear_rabbit_queues.py5
-rw-r--r--nova/cmd/compute.py1
-rw-r--r--nova/cmd/conductor.py1
-rw-r--r--nova/cmd/console.py1
-rw-r--r--nova/cmd/consoleauth.py1
-rw-r--r--nova/cmd/dhcpbridge.py4
-rw-r--r--nova/cmd/manage.py25
-rw-r--r--nova/cmd/network.py1
-rw-r--r--nova/cmd/novncproxy.py1
-rw-r--r--nova/cmd/objectstore.py2
-rw-r--r--nova/cmd/rpc_zmq_receiver.py1
-rw-r--r--nova/cmd/scheduler.py4
-rw-r--r--nova/cmd/spicehtml5proxy.py1
-rw-r--r--nova/cmd/xvpvncproxy.py1
-rw-r--r--nova/compute/api.py39
-rw-r--r--nova/compute/cells_api.py8
-rw-r--r--nova/compute/claims.py25
-rw-r--r--nova/compute/flavors.py (renamed from nova/compute/instance_types.py)42
-rwxr-xr-xnova/compute/manager.py55
-rw-r--r--nova/compute/resource_tracker.py20
-rw-r--r--nova/compute/utils.py4
-rw-r--r--nova/db/sqlalchemy/api.py53
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/178_add_index_to_compute_node_stats.py37
-rw-r--r--nova/db/sqlalchemy/migrate_repo/versions/179_change_cells_deleted_to_int.py209
-rw-r--r--nova/db/sqlalchemy/models.py1
-rw-r--r--nova/db/sqlalchemy/utils.py126
-rw-r--r--nova/exception.py7
-rw-r--r--nova/filters.py12
-rw-r--r--nova/locale/bs/LC_MESSAGES/nova.po1140
-rw-r--r--nova/locale/cs/LC_MESSAGES/nova.po1147
-rw-r--r--nova/locale/da/LC_MESSAGES/nova.po1140
-rw-r--r--nova/locale/de/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/en_AU/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/en_GB/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/en_US/LC_MESSAGES/nova.po1138
-rw-r--r--nova/locale/es/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/fr/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/it/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/ja/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/ko/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/ko_KR/LC_MESSAGES/nova.po1078
-rw-r--r--nova/locale/nb/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/nova.pot1080
-rw-r--r--nova/locale/pt_BR/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/ru/LC_MESSAGES/nova.po1145
-rw-r--r--nova/locale/tl/LC_MESSAGES/nova.po1140
-rw-r--r--nova/locale/tr/LC_MESSAGES/nova.po1140
-rw-r--r--nova/locale/tr_TR/LC_MESSAGES/nova.po1144
-rw-r--r--nova/locale/uk/LC_MESSAGES/nova.po1140
-rw-r--r--nova/locale/vi_VN/LC_MESSAGES/nova.po10918
-rw-r--r--nova/locale/zh_CN/LC_MESSAGES/nova.po1147
-rw-r--r--nova/locale/zh_TW/LC_MESSAGES/nova.po1145
-rw-r--r--nova/network/api.py18
-rw-r--r--nova/network/floating_ips.py7
-rw-r--r--nova/network/linux_net.py19
-rw-r--r--nova/network/manager.py19
-rw-r--r--nova/network/quantumv2/api.py4
-rw-r--r--nova/notifications.py4
-rw-r--r--nova/openstack/common/lockutils.py29
-rw-r--r--nova/openstack/common/processutils.py66
-rwxr-xr-x[-rw-r--r--]nova/openstack/common/rootwrap/cmd.py (renamed from nova/cmd/rootwrap.py)8
-rw-r--r--nova/openstack/common/setup.py369
-rw-r--r--nova/openstack/common/strutils.py150
-rw-r--r--nova/scheduler/driver.py10
-rw-r--r--nova/scheduler/filter_scheduler.py19
-rw-r--r--nova/servicegroup/drivers/zk.py2
-rw-r--r--nova/tests/api/ec2/test_cinder_cloud.py8
-rw-r--r--nova/tests/api/ec2/test_cloud.py36
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_evacuate.py16
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_access.py18
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_manage.py12
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavor_swap.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_flavorextradata.py6
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_floating_ips.py129
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py14
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_snapshots.py4
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_volumes.py22
-rw-r--r--nova/tests/api/openstack/compute/plugins/__init__.py0
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/__init__.py0
-rw-r--r--nova/tests/api/openstack/compute/plugins/v3/test_fixed_ips.py188
-rw-r--r--nova/tests/api/openstack/compute/test_extensions.py1
-rw-r--r--nova/tests/api/openstack/compute/test_flavors.py46
-rw-r--r--nova/tests/api/openstack/compute/test_server_actions.py28
-rw-r--r--nova/tests/api/openstack/compute/test_servers.py10
-rw-r--r--nova/tests/api/openstack/fakes.py10
-rw-r--r--nova/tests/baremetal/test_driver.py34
-rw-r--r--nova/tests/baremetal/test_ipmi.py15
-rw-r--r--nova/tests/baremetal/test_virtual_power_driver.py15
-rw-r--r--nova/tests/compute/test_compute.py223
-rw-r--r--nova/tests/compute/test_compute_utils.py20
-rw-r--r--nova/tests/compute/test_resource_tracker.py4
-rw-r--r--nova/tests/conductor/test_conductor.py4
-rw-r--r--nova/tests/fake_policy.py2
-rw-r--r--nova/tests/fake_processutils.py (renamed from nova/tests/fake_utils.py)7
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl8
-rw-r--r--nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tpl0
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tpl0
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tpl9
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tpl9
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tpl3
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tpl19
-rw-r--r--nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tpl5
-rw-r--r--nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl23
-rw-r--r--nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl2
-rw-r--r--nova/tests/integrated/test_api_samples.py16
-rw-r--r--nova/tests/network/test_api.py26
-rw-r--r--nova/tests/network/test_quantumv2.py6
-rw-r--r--nova/tests/scheduler/fakes.py4
-rw-r--r--nova/tests/scheduler/test_filter_scheduler.py4
-rw-r--r--nova/tests/scheduler/test_scheduler.py39
-rw-r--r--nova/tests/servicegroup/test_zk_driver.py6
-rw-r--r--nova/tests/test_db_api.py217
-rw-r--r--nova/tests/test_hypervapi.py118
-rw-r--r--nova/tests/test_imagebackend.py39
-rw-r--r--nova/tests/test_instance_types.py397
-rw-r--r--nova/tests/test_libvirt.py151
-rw-r--r--nova/tests/test_libvirt_blockinfo.py4
-rw-r--r--nova/tests/test_libvirt_config.py12
-rw-r--r--nova/tests/test_metadata.py6
-rw-r--r--nova/tests/test_migration_utils.py166
-rw-r--r--nova/tests/test_migrations.py185
-rw-r--r--nova/tests/test_notifications.py6
-rw-r--r--nova/tests/test_powervm.py74
-rw-r--r--nova/tests/test_quota.py12
-rw-r--r--nova/tests/test_utils.py22
-rw-r--r--nova/tests/test_virt_disk_vfs_localfs.py115
-rw-r--r--nova/tests/test_vmwareapi_vif.py87
-rw-r--r--nova/tests/test_vmwareapi_vm_util.py55
-rw-r--r--nova/tests/test_xenapi.py273
-rw-r--r--nova/tests/utils.py4
-rw-r--r--nova/tests/virt/xenapi/test_vm_utils.py192
-rw-r--r--nova/tests/virt/xenapi/test_vmops.py15
-rw-r--r--nova/tests/virt/xenapi/test_volumeops.py72
-rw-r--r--nova/utils.py85
-rwxr-xr-xnova/virt/baremetal/driver.py18
-rw-r--r--nova/virt/baremetal/ipmi.py50
-rw-r--r--nova/virt/baremetal/pxe.py4
-rwxr-xr-xnova/virt/baremetal/tilera.py4
-rw-r--r--nova/virt/baremetal/virtual_power_driver.py5
-rwxr-xr-xnova/virt/driver.py4
-rwxr-xr-xnova/virt/fake.py4
-rw-r--r--nova/virt/firewall.py6
-rw-r--r--nova/virt/hyperv/imagecache.py13
-rw-r--r--nova/virt/hyperv/migrationops.py18
-rw-r--r--nova/virt/hyperv/vmutils.py8
-rw-r--r--nova/virt/libvirt/blockinfo.py4
-rw-r--r--nova/virt/libvirt/config.py8
-rwxr-xr-xnova/virt/libvirt/driver.py117
-rwxr-xr-xnova/virt/libvirt/imagebackend.py21
-rw-r--r--nova/virt/libvirt/imagecache.py10
-rw-r--r--nova/virt/libvirt/volume.py9
-rw-r--r--nova/virt/powervm/blockdev.py18
-rw-r--r--nova/virt/powervm/common.py35
-rwxr-xr-xnova/virt/powervm/driver.py4
-rw-r--r--nova/virt/powervm/operator.py13
-rw-r--r--nova/virt/storage_users.py6
-rw-r--r--nova/virt/vmwareapi/fake.py6
-rw-r--r--nova/virt/vmwareapi/vif.py34
-rw-r--r--nova/virt/vmwareapi/vm_util.py5
-rwxr-xr-xnova/virt/xenapi/driver.py20
-rw-r--r--nova/virt/xenapi/vm_utils.py109
-rw-r--r--nova/virt/xenapi/vmops.py252
-rw-r--r--nova/virt/xenapi/volumeops.py63
-rw-r--r--openstack-common.conf2
-rw-r--r--plugins/xenserver/xenapi/contrib/rpmbuild/SPECS/openstack-xen-plugins.spec1
-rwxr-xr-xplugins/xenserver/xenapi/etc/xapi.d/plugins/config_file19
-rw-r--r--plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py54
-rwxr-xr-xrun_tests.sh13
-rw-r--r--setup.cfg58
-rw-r--r--setup.py89
-rw-r--r--smoketests/requirements.txt1
-rw-r--r--tools/pip-requires3
-rw-r--r--tools/test-requires1
230 files changed, 28797 insertions, 14811 deletions
diff --git a/README.rst b/README.rst
index 8e50b4584..51f8fe119 100644
--- a/README.rst
+++ b/README.rst
@@ -24,6 +24,11 @@ available online at:
http://docs.openstack.org
+For information about the different compute (hypervisor) drivers
+supported by Nova, read this page on the wiki:
+
+ https://wiki.openstack.org/wiki/HypervisorSupportMatrix
+
In the unfortunate event that bugs are discovered, they should
be reported to the appropriate bug tracker. If you obtained
the software from a 3rd party operating system vendor, it is
diff --git a/bin/nova-rootwrap b/bin/nova-rootwrap
index f37958ba5..5e3c4fa23 100755
--- a/bin/nova-rootwrap
+++ b/bin/nova-rootwrap
@@ -17,6 +17,6 @@
# limitations under the License.
# Temporary shim to do a devstack transition
-from nova.cmd import rootwrap
+from nova.openstack.common.rootwrap import cmd
-rootwrap.main()
+cmd.main()
diff --git a/doc/api_samples/all_extensions/extensions-get-resp.json b/doc/api_samples/all_extensions/extensions-get-resp.json
index df8ed83e5..d7c2a646c 100644
--- a/doc/api_samples/all_extensions/extensions-get-resp.json
+++ b/doc/api_samples/all_extensions/extensions-get-resp.json
@@ -233,6 +233,14 @@
"updated": "2013-01-06T00:00:00+00:00"
},
{
+ "alias": "os-extended-floating-ips",
+ "description": "Adds optional fixed_address to the add floating IP command.",
+ "links": [],
+ "name": "ExtendedFloatingIps",
+ "namespace": "http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2",
+ "updated": "2013-04-19T00:00:00+00:00"
+ },
+ {
"alias": "os-fixed-ips",
"description": "Fixed IPs support.",
"links": [],
diff --git a/doc/api_samples/all_extensions/extensions-get-resp.xml b/doc/api_samples/all_extensions/extensions-get-resp.xml
index 1ec2010dc..f6213a3a9 100644
--- a/doc/api_samples/all_extensions/extensions-get-resp.xml
+++ b/doc/api_samples/all_extensions/extensions-get-resp.xml
@@ -103,6 +103,9 @@
<extension alias="os-evacuate" updated="2013-01-06T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/evacuate/api/v2" name="Evacuate">
<description>Enables server evacuation.</description>
</extension>
+ <extension alias="os-extended-floating-ips" updated="2013-04-19T00:00:00+00:00" namespace="http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2" name="ExtendedFloatingIps">
+ <description>Adds optional fixed_address to the add floating IP command.</description>
+ </extension>
<extension alias="os-fixed-ips" updated="2012-10-18T13:25:27-06:00" namespace="http://docs.openstack.org/compute/ext/fixed_ips/api/v2" name="FixedIPs">
<description>Fixed IPs support.</description>
</extension>
diff --git a/doc/api_samples/os-evacuate/server-evacuate-req.xml b/doc/api_samples/os-evacuate/server-evacuate-req.xml
index 636772dca..d9f4824b7 100644
--- a/doc/api_samples/os-evacuate/server-evacuate-req.xml
+++ b/doc/api_samples/os-evacuate/server-evacuate-req.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<rescue xmlns="http://docs.openstack.org/compute/api/v2"
+<evacuate xmlns="http://docs.openstack.org/compute/api/v2"
host="TargetHost"
adminPass="MySecretPass"
onSharedStorage="True"/>
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json b/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml b/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json b/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json
new file mode 100644
index 000000000..511b009be
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.json
@@ -0,0 +1,3 @@
+{
+ "pool": "nova"
+} \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml b/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml
new file mode 100644
index 000000000..f77525e74
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-req.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<pool>nova</pool> \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json b/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json
new file mode 100644
index 000000000..fe161a7dd
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.json
@@ -0,0 +1,9 @@
+{
+ "floating_ip": {
+ "fixed_ip": null,
+ "id": 1,
+ "instance_id": null,
+ "ip": "10.10.10.1",
+ "pool": "nova"
+ }
+} \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml b/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml
new file mode 100644
index 000000000..e0f68ef50
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ip instance_id="None" ip="10.10.10.1" fixed_ip="None" id="1" pool="nova"/> \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json b/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json
new file mode 100644
index 000000000..121dbd084
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json
@@ -0,0 +1,3 @@
+{
+ "floating_ips": []
+} \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml b/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml
new file mode 100644
index 000000000..da6f0d4ce
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ips/> \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json b/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json
new file mode 100644
index 000000000..4d58e0676
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.json
@@ -0,0 +1,18 @@
+{
+ "floating_ips": [
+ {
+ "fixed_ip": null,
+ "id": 1,
+ "instance_id": null,
+ "ip": "10.10.10.1",
+ "pool": "nova"
+ },
+ {
+ "fixed_ip": null,
+ "id": 2,
+ "instance_id": null,
+ "ip": "10.10.10.2",
+ "pool": "nova"
+ }
+ ]
+} \ No newline at end of file
diff --git a/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml b/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml
new file mode 100644
index 000000000..78348be55
--- /dev/null
+++ b/doc/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ips>
+ <floating_ip instance_id="None" ip="10.10.10.1" fixed_ip="None" id="1" pool="nova"/>
+ <floating_ip instance_id="None" ip="10.10.10.2" fixed_ip="None" id="2" pool="nova"/>
+</floating_ips> \ No newline at end of file
diff --git a/doc/api_samples/os-volumes/snapshot-create-resp.json b/doc/api_samples/os-volumes/snapshot-create-resp.json
index 1a14bea01..a8dd57d84 100644
--- a/doc/api_samples/os-volumes/snapshot-create-resp.json
+++ b/doc/api_samples/os-volumes/snapshot-create-resp.json
@@ -6,27 +6,6 @@
"id": 100,
"size": 100,
"status": "available",
- "volumeId": {
- "attach_status": "attached",
- "availability_zone": "fakeaz",
- "created_at": "1999-01-01T01:01:01.000000",
- "display_description": "displaydesc",
- "display_name": "displayname",
- "host": "fakehost",
- "id": "521752a6-acf6-4b2d-bc7a-119f9148cd8c",
- "instance_uuid": "fakeuuid",
- "mountpoint": "/",
- "name": "vol name",
- "project_id": "fakeproject",
- "size": 1,
- "snapshot_id": null,
- "status": "fakestatus",
- "user_id": "fakeuser",
- "volume_metadata": [],
- "volume_type": {
- "name": "vol_type_name"
- },
- "volume_type_id": "fakevoltype"
- }
+ "volumeId": "521752a6-acf6-4b2d-bc7a-119f9148cd8c"
}
} \ No newline at end of file
diff --git a/doc/api_samples/os-volumes/snapshot-create-resp.xml b/doc/api_samples/os-volumes/snapshot-create-resp.xml
index ad815f723..654bf3d34 100644
--- a/doc/api_samples/os-volumes/snapshot-create-resp.xml
+++ b/doc/api_samples/os-volumes/snapshot-create-resp.xml
@@ -1,2 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
-<snapshot status="available" displayDescription="Daily backup" displayName="snap-001" volumeId="{'instance_uuid': 'fakeuuid', 'status': 'fakestatus', 'user_id': 'fakeuser', 'name': 'vol name', 'display_name': 'displayname', 'availability_zone': 'fakeaz', 'created_at': datetime.datetime(1999, 1, 1, 1, 1, 1), 'attach_status': 'attached', 'display_description': 'displaydesc', 'host': 'fakehost', 'volume_type_id': 'fakevoltype', 'volume_metadata': [], 'volume_type': {'name': 'vol_type_name'}, 'snapshot_id': None, 'mountpoint': '/', 'project_id': 'fakeproject', 'id': u'521752a6-acf6-4b2d-bc7a-119f9148cd8c', 'size': 1}" id="100" createdAt="2013-02-25 16:27:36.840121" size="100"/> \ No newline at end of file
+<snapshot status="available" displayDescription="Daily backup" displayName="snap-001" volumeId="521752a6-acf6-4b2d-bc7a-119f9148cd8c" id="100" createdAt="2013-02-25 16:27:36.840121" size="100"/> \ No newline at end of file
diff --git a/etc/nova/api-paste.ini b/etc/nova/api-paste.ini
index 76e4e447c..1bd26143f 100644
--- a/etc/nova/api-paste.ini
+++ b/etc/nova/api-paste.ini
@@ -61,6 +61,7 @@ use = call:nova.api.openstack.urlmap:urlmap_factory
/: oscomputeversions
/v1.1: openstack_compute_api_v2
/v2: openstack_compute_api_v2
+/v3: openstack_compute_api_v3
[composite:openstack_compute_api_v2]
use = call:nova.api.auth:pipeline_factory
@@ -68,6 +69,12 @@ noauth = faultwrap sizelimit noauth ratelimit osapi_compute_app_v2
keystone = faultwrap sizelimit authtoken keystonecontext ratelimit osapi_compute_app_v2
keystone_nolimit = faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v2
+[composite:openstack_compute_api_v3]
+use = call:nova.api.auth:pipeline_factory
+noauth = faultwrap sizelimit noauth ratelimit osapi_compute_app_v3
+keystone = faultwrap sizelimit authtoken keystonecontext ratelimit osapi_compute_app_v3
+keystone_nolimit = faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v3
+
[filter:faultwrap]
paste.filter_factory = nova.api.openstack:FaultWrapper.factory
@@ -83,6 +90,9 @@ paste.filter_factory = nova.api.sizelimit:RequestBodySizeLimiter.factory
[app:osapi_compute_app_v2]
paste.app_factory = nova.api.openstack.compute:APIRouter.factory
+[app:osapi_compute_app_v3]
+paste.app_factory = nova.api.openstack.compute:APIRouterV3.factory
+
[pipeline:oscomputeversions]
pipeline = faultwrap oscomputeversionapp
@@ -104,6 +114,9 @@ auth_protocol = http
admin_tenant_name = %SERVICE_TENANT_NAME%
admin_user = %SERVICE_USER%
admin_password = %SERVICE_PASSWORD%
-signing_dir = /tmp/keystone-signing-nova
+# signing_dir is configurable, but the default behavior of the authtoken
+# middleware should be sufficient. It will create a temporary directory
+# in the home directory for the user the nova process is running as.
+#signing_dir = /var/lib/nova/keystone-signing
# Workaround for https://bugs.launchpad.net/nova/+bug/1154809
auth_version = v2.0
diff --git a/etc/nova/rootwrap.d/baremetal-deploy-helper.filters b/etc/nova/rootwrap.d/baremetal-deploy-helper.filters
index b4d11e24f..3bf86f3e5 100644
--- a/etc/nova/rootwrap.d/baremetal-deploy-helper.filters
+++ b/etc/nova/rootwrap.d/baremetal-deploy-helper.filters
@@ -3,8 +3,8 @@
[Filters]
# nova-baremetal-deploy-helper
-iscsiadm: CommandFilter, /sbin/iscsiadm, root
-sfdisk: CommandFilter, /sbin/sfdisk, root
-dd: CommandFilter, /bin/dd, root
-mkswap: CommandFilter, /sbin/mkswap, root
-blkid: CommandFilter, /sbin/blkid, root
+iscsiadm: CommandFilter, iscsiadm, root
+sfdisk: CommandFilter, sfdisk, root
+dd: CommandFilter, dd, root
+mkswap: CommandFilter, mkswap, root
+blkid: CommandFilter, blkid, root
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index da319bc8b..e2abde48c 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -36,7 +36,7 @@ from nova import block_device
from nova.cloudpipe import pipelib
from nova import compute
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import vm_states
from nova import db
from nova import exception
@@ -1091,7 +1091,7 @@ class CloudController(object):
@staticmethod
def _format_instance_type(instance, result):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
result['instanceType'] = instance_type['name']
@staticmethod
@@ -1323,7 +1323,7 @@ class CloudController(object):
raise exception.EC2APIError(_('Image must be available'))
(instances, resv_id) = self.compute_api.create(context,
- instance_type=instance_types.get_instance_type_by_name(
+ instance_type=flavors.get_instance_type_by_name(
kwargs.get('instance_type', None)),
image_href=image_uuid,
max_count=int(kwargs.get('max_count', min_count)),
diff --git a/nova/api/metadata/base.py b/nova/api/metadata/base.py
index f50ddeb25..d53241308 100644
--- a/nova/api/metadata/base.py
+++ b/nova/api/metadata/base.py
@@ -28,7 +28,7 @@ from oslo.config import cfg
from nova.api.ec2 import ec2utils
from nova.api.metadata import password
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import conductor
from nova import context
from nova import network
@@ -209,7 +209,7 @@ class InstanceMetadata():
meta_data['product-codes'] = []
if self._check_version('2007-08-29', version):
- instance_type = instance_types.extract_instance_type(self.instance)
+ instance_type = flavors.extract_instance_type(self.instance)
meta_data['instance-type'] = instance_type['name']
if False and self._check_version('2007-10-10', version):
diff --git a/nova/api/openstack/__init__.py b/nova/api/openstack/__init__.py
index a76b74324..cc276234b 100644
--- a/nova/api/openstack/__init__.py
+++ b/nova/api/openstack/__init__.py
@@ -21,9 +21,11 @@ WSGI middleware for OpenStack API controllers.
"""
import routes
+import stevedore
import webob.dec
import webob.exc
+from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova import notifications
from nova.openstack.common import log as logging
@@ -191,3 +193,111 @@ class APIRouter(base_wsgi.Router):
def _setup_routes(self, mapper, ext_mgr, init_only):
raise NotImplementedError()
+
+
+class APIRouterV3(base_wsgi.Router):
+ """
+ Routes requests on the OpenStack v3 API to the appropriate controller
+ and method.
+ """
+
+ API_EXTENSION_NAMESPACE = 'nova.api.v3.extensions'
+
+ @classmethod
+ def factory(cls, global_config, **local_config):
+ """Simple paste factory, :class:`nova.wsgi.Router` doesn't have one."""
+ return cls()
+
+ def __init__(self):
+ # TODO(cyeoh): bp v3-api-extension-framework. Currently load
+ # all extensions but eventually should be able to exclude
+ # based on a config file
+ def _check_load_extension(ext):
+ return isinstance(ext.obj, extensions.V3APIExtensionBase)
+
+ self.api_extension_manager = stevedore.enabled.EnabledExtensionManager(
+ namespace=self.API_EXTENSION_NAMESPACE,
+ check_func=_check_load_extension,
+ invoke_on_load=True)
+
+ mapper = ProjectMapper()
+ self.resources = {}
+
+ # NOTE(cyeoh) Core API support is rewritten as extensions
+ # but conceptually still have core
+ if list(self.api_extension_manager):
+ # NOTE(cyeoh): Stevedore raises an exception if there are
+ # no plugins detected. I wonder if this is a bug.
+ self.api_extension_manager.map(self._register_extensions)
+ self.api_extension_manager.map(self._register_resources,
+ mapper=mapper)
+ self.api_extension_manager.map(self._register_controllers)
+
+ super(APIRouterV3, self).__init__(mapper)
+
+ def _register_extensions(self, ext):
+ raise NotImplementedError()
+
+ def _register_resources(self, ext, mapper):
+ """Register resources defined by the extensions
+
+ Extensions define what resources they want to add through a
+ get_resources function
+ """
+
+ handler = ext.obj
+ LOG.debug("Running _register_resources on %s", ext.obj)
+
+ for resource in handler.get_resources():
+ LOG.debug(_('Extended resource: %s'), resource.collection)
+
+ inherits = None
+ if resource.inherits:
+ inherits = self.resources.get(resource.inherits)
+ if not resource.controller:
+ resource.controller = inherits.controller
+ wsgi_resource = wsgi.Resource(resource.controller,
+ inherits=inherits)
+ self.resources[resource.collection] = wsgi_resource
+ kargs = dict(
+ controller=wsgi_resource,
+ collection=resource.collection_actions,
+ member=resource.member_actions)
+
+ if resource.parent:
+ kargs['parent_resource'] = resource.parent
+
+ mapper.resource(resource.collection, resource.collection,
+ **kargs)
+
+ if resource.custom_routes_fn:
+ resource.custom_routes_fn(mapper, wsgi_resource)
+
+ def _register_controllers(self, ext):
+ """Register controllers defined by the extensions
+
+ Extensions define what resources they want to add through
+ a get_controller_extensions function
+ """
+
+ handler = ext.obj
+ LOG.debug("Running _register_controllers on %s", ext.obj)
+
+ for extension in handler.get_controller_extensions():
+ ext_name = extension.extension.name
+ collection = extension.collection
+ controller = extension.controller
+
+ if collection not in self.resources:
+ LOG.warning(_('Extension %(ext_name)s: Cannot extend '
+ 'resource %(collection)s: No such resource'),
+ {'ext_name': ext_name, 'collection': collection})
+ continue
+
+ LOG.debug(_('Extension %(ext_name)s extending resource: '
+ '%(collection)s'),
+ {'ext_name': ext_name, 'collection': collection})
+
+ resource = self.resources[collection]
+ resource.register_actions(controller)
+ resource.register_extensions(controller)
diff --git a/nova/api/openstack/compute/__init__.py b/nova/api/openstack/compute/__init__.py
index a46d51eaf..80247705f 100644
--- a/nova/api/openstack/compute/__init__.py
+++ b/nova/api/openstack/compute/__init__.py
@@ -128,3 +128,15 @@ class APIRouter(nova.api.openstack.APIRouter):
controller=server_metadata_controller,
action='update_all',
conditions={"method": ['PUT']})
+
+
+class APIRouterV3(nova.api.openstack.APIRouterV3):
+ """
+ Routes requests on the OpenStack API to the appropriate controller
+ and method.
+ """
+
+ def _register_extensions(self, ext):
+ pass
+ # TODO(cyeoh): bp v3-api-extension-framework - Register extension
+ # information
diff --git a/nova/api/openstack/compute/contrib/disk_config.py b/nova/api/openstack/compute/contrib/disk_config.py
index 2c4d24332..f2b906144 100644
--- a/nova/api/openstack/compute/contrib/disk_config.py
+++ b/nova/api/openstack/compute/contrib/disk_config.py
@@ -21,7 +21,7 @@ from webob import exc
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova import utils
+from nova.openstack.common import strutils
ALIAS = 'OS-DCF'
XMLNS_DCF = "http://docs.openstack.org/compute/ext/disk_config/api/v1.1"
@@ -65,7 +65,7 @@ class ImageDiskConfigController(wsgi.Controller):
metadata = image['metadata']
if INTERNAL_DISK_CONFIG in metadata:
raw_value = metadata[INTERNAL_DISK_CONFIG]
- value = utils.bool_from_str(raw_value)
+ value = strutils.bool_from_string(raw_value)
image[API_DISK_CONFIG] = disk_config_to_api(value)
@wsgi.extends
diff --git a/nova/api/openstack/compute/contrib/evacuate.py b/nova/api/openstack/compute/contrib/evacuate.py
index 275cec904..7eee99ed1 100644
--- a/nova/api/openstack/compute/contrib/evacuate.py
+++ b/nova/api/openstack/compute/contrib/evacuate.py
@@ -21,6 +21,7 @@ from nova.api.openstack import wsgi
from nova import compute
from nova import exception
from nova.openstack.common import log as logging
+from nova.openstack.common import strutils
from nova import utils
LOG = logging.getLogger(__name__)
@@ -39,9 +40,6 @@ class Controller(wsgi.Controller):
to a new one.
"""
context = req.environ["nova.context"]
- if not context.is_admin:
- msg = _("Instance evacuate is admin only functionality")
- raise exc.HTTPForbidden(explanation=msg)
authorize(context)
try:
@@ -50,7 +48,7 @@ class Controller(wsgi.Controller):
evacuate_body = body["evacuate"]
host = evacuate_body["host"]
- on_shared_storage = utils.bool_from_str(
+ on_shared_storage = strutils.bool_from_string(
evacuate_body["onSharedStorage"])
password = None
diff --git a/nova/api/openstack/compute/contrib/extended_floating_ips.py b/nova/api/openstack/compute/contrib/extended_floating_ips.py
new file mode 100644
index 000000000..06f1fa903
--- /dev/null
+++ b/nova/api/openstack/compute/contrib/extended_floating_ips.py
@@ -0,0 +1,27 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2012 OpenStack Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License
+
+from nova.api.openstack import extensions
+
+
+class Extended_floating_ips(extensions.ExtensionDescriptor):
+ """Adds optional fixed_address to the add floating IP command."""
+
+ name = "ExtendedFloatingIps"
+ alias = "os-extended-floating-ips"
+ namespace = ("http://docs.openstack.org/compute/ext/"
+ "extended_floating_ips/api/v2")
+ updated = "2013-04-19T00:00:00+00:00"
diff --git a/nova/api/openstack/compute/contrib/flavor_access.py b/nova/api/openstack/compute/contrib/flavor_access.py
index 39220ee4a..566eb6472 100644
--- a/nova/api/openstack/compute/contrib/flavor_access.py
+++ b/nova/api/openstack/compute/contrib/flavor_access.py
@@ -22,7 +22,7 @@ import webob
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
@@ -70,7 +70,7 @@ class FlavorAccessTemplate(xmlutil.TemplateBuilder):
def _marshall_flavor_access(flavor_id):
rval = []
try:
- access_list = instance_types.\
+ access_list = flavors.\
get_instance_type_access_by_flavor_id(flavor_id)
except exception.FlavorNotFound:
explanation = _("Flavor not found.")
@@ -95,7 +95,7 @@ class FlavorAccessController(object):
authorize(context)
try:
- flavor = instance_types.get_instance_type_by_flavor_id(flavor_id)
+ flavor = flavors.get_instance_type_by_flavor_id(flavor_id)
except exception.FlavorNotFound:
explanation = _("Flavor not found.")
raise webob.exc.HTTPNotFound(explanation=explanation)
@@ -119,7 +119,7 @@ class FlavorActionController(wsgi.Controller):
def _get_flavor_refs(self, context):
"""Return a dictionary mapping flavorid to flavor_ref."""
- flavor_refs = instance_types.get_all_types(context)
+ flavor_refs = flavors.get_all_types(context)
rval = {}
for name, obj in flavor_refs.iteritems():
rval[obj['flavorid']] = obj
@@ -173,7 +173,7 @@ class FlavorActionController(wsgi.Controller):
tenant = vals['tenant']
try:
- instance_types.add_instance_type_access(id, tenant, context)
+ flavors.add_instance_type_access(id, tenant, context)
except exception.FlavorAccessExists as err:
raise webob.exc.HTTPConflict(explanation=err.format_message())
@@ -190,7 +190,7 @@ class FlavorActionController(wsgi.Controller):
tenant = vals['tenant']
try:
- instance_types.remove_instance_type_access(id, tenant, context)
+ flavors.remove_instance_type_access(id, tenant, context)
except exception.FlavorAccessNotFound, e:
raise webob.exc.HTTPNotFound(explanation=e.format_message())
diff --git a/nova/api/openstack/compute/contrib/flavormanage.py b/nova/api/openstack/compute/contrib/flavormanage.py
index ddf8aa5af..086c541dc 100644
--- a/nova/api/openstack/compute/contrib/flavormanage.py
+++ b/nova/api/openstack/compute/contrib/flavormanage.py
@@ -18,7 +18,7 @@ from nova.api.openstack.compute import flavors as flavors_api
from nova.api.openstack.compute.views import flavors as flavors_view
from nova.api.openstack import extensions
from nova.api.openstack import wsgi
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
@@ -40,12 +40,12 @@ class FlavorManageController(wsgi.Controller):
authorize(context)
try:
- flavor = instance_types.get_instance_type_by_flavor_id(
+ flavor = flavors.get_instance_type_by_flavor_id(
id, read_deleted="no")
except exception.NotFound, e:
raise webob.exc.HTTPNotFound(explanation=e.format_message())
- instance_types.destroy(flavor['name'])
+ flavors.destroy(flavor['name'])
return webob.Response(status_int=202)
@@ -58,18 +58,20 @@ class FlavorManageController(wsgi.Controller):
vals = body['flavor']
name = vals['name']
flavorid = vals.get('id')
- memory_mb = vals.get('ram')
+ memory = vals.get('ram')
vcpus = vals.get('vcpus')
root_gb = vals.get('disk')
- ephemeral_gb = vals.get('OS-FLV-EXT-DATA:ephemeral')
- swap = vals.get('swap')
- rxtx_factor = vals.get('rxtx_factor')
+ ephemeral_gb = vals.get('OS-FLV-EXT-DATA:ephemeral', 0)
+ swap = vals.get('swap', 0)
+ rxtx_factor = vals.get('rxtx_factor', 1.0)
is_public = vals.get('os-flavor-access:is_public', True)
try:
- flavor = instance_types.create(name, memory_mb, vcpus,
- root_gb, ephemeral_gb, flavorid,
- swap, rxtx_factor, is_public)
+ flavor = flavors.create(name, memory, vcpus, root_gb,
+ ephemeral_gb=ephemeral_gb,
+ flavorid=flavorid, swap=swap,
+ rxtx_factor=rxtx_factor,
+ is_public=is_public)
req.cache_db_flavor(flavor)
except (exception.InstanceTypeExists,
exception.InstanceTypeIdExists) as err:
diff --git a/nova/api/openstack/compute/contrib/floating_ips.py b/nova/api/openstack/compute/contrib/floating_ips.py
index 5d936cbbc..d2cf99431 100644
--- a/nova/api/openstack/compute/contrib/floating_ips.py
+++ b/nova/api/openstack/compute/contrib/floating_ips.py
@@ -198,10 +198,11 @@ class FloatingIPController(object):
class FloatingIPActionController(wsgi.Controller):
- def __init__(self, *args, **kwargs):
+ def __init__(self, ext_mgr=None, *args, **kwargs):
super(FloatingIPActionController, self).__init__(*args, **kwargs)
self.compute_api = compute.API()
self.network_api = network.API()
+ self.ext_mgr = ext_mgr
@wsgi.action('addFloatingIp')
def _add_floating_ip(self, req, id, body):
@@ -230,18 +231,27 @@ class FloatingIPActionController(wsgi.Controller):
msg = _('No fixed ips associated to instance')
raise webob.exc.HTTPBadRequest(explanation=msg)
- # TODO(tr3buchet): this will associate the floating IP with the
- # first fixed_ip an instance has. This should be
- # changed to support specifying a particular fixed_ip if
- # multiple exist.
- if len(fixed_ips) > 1:
- msg = _('multiple fixed_ips exist, using the first: %s')
- LOG.warning(msg, fixed_ips[0]['address'])
+ fixed_address = None
+ if self.ext_mgr.is_loaded('os-extended-floating-ips'):
+ if 'fixed_address' in body['addFloatingIp']:
+ fixed_address = body['addFloatingIp']['fixed_address']
+ for fixed in fixed_ips:
+ if fixed['address'] == fixed_address:
+ break
+ else:
+ msg = _('Specified fixed address not assigned to instance')
+ raise webob.exc.HTTPBadRequest(explanation=msg)
+
+ if not fixed_address:
+ fixed_address = fixed_ips[0]['address']
+ if len(fixed_ips) > 1:
+ msg = _('multiple fixed_ips exist, using the first: %s')
+ LOG.warning(msg, fixed_address)
try:
self.network_api.associate_floating_ip(context, instance,
floating_address=address,
- fixed_address=fixed_ips[0]['address'])
+ fixed_address=fixed_address)
except exception.FloatingIpAssociated:
msg = _('floating ip is already associated')
raise webob.exc.HTTPBadRequest(explanation=msg)
@@ -322,6 +332,6 @@ class Floating_ips(extensions.ExtensionDescriptor):
return resources
def get_controller_extensions(self):
- controller = FloatingIPActionController()
+ controller = FloatingIPActionController(self.ext_mgr)
extension = extensions.ControllerExtension(self, 'servers', controller)
return [extension]
diff --git a/nova/api/openstack/compute/contrib/simple_tenant_usage.py b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
index b653564c0..e5f9b44b7 100644
--- a/nova/api/openstack/compute/contrib/simple_tenant_usage.py
+++ b/nova/api/openstack/compute/contrib/simple_tenant_usage.py
@@ -24,7 +24,7 @@ from nova.api.openstack import extensions
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova.compute import api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common import timeutils
@@ -108,7 +108,7 @@ class SimpleTenantUsageController(object):
"""Get flavor information from the instance's system_metadata,
allowing a fallback to lookup by-id for deleted instances only."""
try:
- return instance_types.extract_instance_type(instance)
+ return flavors.extract_instance_type(instance)
except KeyError:
if not instance['deleted']:
# Only support the fallback mechanism for deleted instances
diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py
index 640ac0c76..ea1fb1f21 100644
--- a/nova/api/openstack/compute/contrib/volumes.py
+++ b/nova/api/openstack/compute/contrib/volumes.py
@@ -25,6 +25,7 @@ from nova.api.openstack import xmlutil
from nova import compute
from nova import exception
from nova.openstack.common import log as logging
+from nova.openstack.common import strutils
from nova.openstack.common import uuidutils
from nova import utils
from nova import volume
@@ -244,15 +245,19 @@ class VolumeController(wsgi.Controller):
availability_zone = vol.get('availability_zone', None)
- new_volume = self.volume_api.create(context,
- size,
- vol.get('display_name'),
- vol.get('display_description'),
- snapshot=snapshot,
- volume_type=vol_type,
- metadata=metadata,
- availability_zone=availability_zone
- )
+ try:
+ new_volume = self.volume_api.create(
+ context,
+ size,
+ vol.get('display_name'),
+ vol.get('display_description'),
+ snapshot=snapshot,
+ volume_type=vol_type,
+ metadata=metadata,
+ availability_zone=availability_zone
+ )
+ except exception.InvalidInput as err:
+ raise exc.HTTPBadRequest(explanation=str(err))
# TODO(vish): Instance should be None at db layer instead of
# trying to lazy load, but for now we turn it into
@@ -620,7 +625,7 @@ class SnapshotController(wsgi.Controller):
msg = _("Invalid value '%s' for force.") % force
raise exception.InvalidParameterValue(err=msg)
- if utils.bool_from_str(force):
+ if strutils.bool_from_string(force):
new_snapshot = self.volume_api.create_snapshot_force(context,
vol,
snapshot.get('display_name'),
diff --git a/nova/api/openstack/compute/flavors.py b/nova/api/openstack/compute/flavors.py
index a0d33abd4..744fe5e93 100644
--- a/nova/api/openstack/compute/flavors.py
+++ b/nova/api/openstack/compute/flavors.py
@@ -21,8 +21,9 @@ from nova.api.openstack import common
from nova.api.openstack.compute.views import flavors as flavors_view
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
+from nova.openstack.common import strutils
def make_flavor(elem, detailed=False):
@@ -70,46 +71,41 @@ class Controller(wsgi.Controller):
@wsgi.serializers(xml=MinimalFlavorsTemplate)
def index(self, req):
"""Return all flavors in brief."""
- flavors = self._get_flavors(req)
- return self._view_builder.index(req, flavors)
+ limited_flavors = self._get_flavors(req)
+ return self._view_builder.index(req, limited_flavors)
@wsgi.serializers(xml=FlavorsTemplate)
def detail(self, req):
"""Return all flavors in detail."""
- flavors = self._get_flavors(req)
- req.cache_db_flavors(flavors)
- return self._view_builder.detail(req, flavors)
+ limited_flavors = self._get_flavors(req)
+ req.cache_db_flavors(limited_flavors)
+ return self._view_builder.detail(req, limited_flavors)
@wsgi.serializers(xml=FlavorTemplate)
def show(self, req, id):
"""Return data about the given flavor id."""
try:
- flavor = instance_types.get_instance_type_by_flavor_id(id)
+ flavor = flavors.get_instance_type_by_flavor_id(id)
req.cache_db_flavor(flavor)
except exception.NotFound:
raise webob.exc.HTTPNotFound()
return self._view_builder.show(req, flavor)
- def _get_is_public(self, req):
+ def _parse_is_public(self, is_public):
"""Parse is_public into something usable."""
- is_public = req.params.get('is_public', None)
if is_public is None:
# preserve default value of showing only public flavors
return True
- elif is_public is True or \
- is_public.lower() in ['t', 'true', 'yes', '1']:
- return True
- elif is_public is False or \
- is_public.lower() in ['f', 'false', 'no', '0']:
- return False
- elif is_public.lower() == 'none':
- # value to match all flavors, ignore is_public
+ elif is_public == 'none':
return None
else:
- msg = _('Invalid is_public filter [%s]') % req.params['is_public']
- raise webob.exc.HTTPBadRequest(explanation=msg)
+ try:
+ return strutils.bool_from_string(is_public, strict=True)
+ except ValueError:
+ msg = _('Invalid is_public filter [%s]') % is_public
+ raise webob.exc.HTTPBadRequest(explanation=msg)
def _get_flavors(self, req):
"""Helper function that returns a list of flavor dicts."""
@@ -118,7 +114,8 @@ class Controller(wsgi.Controller):
context = req.environ['nova.context']
if context.is_admin:
# Only admin has query access to all flavor types
- filters['is_public'] = self._get_is_public(req)
+ filters['is_public'] = self._parse_is_public(
+ req.params.get('is_public', None))
else:
filters['is_public'] = True
filters['disabled'] = False
@@ -137,8 +134,8 @@ class Controller(wsgi.Controller):
msg = _('Invalid minDisk filter [%s]') % req.params['minDisk']
raise webob.exc.HTTPBadRequest(explanation=msg)
- flavors = instance_types.get_all_types(context, filters=filters)
- flavors_list = flavors.values()
+ limited_flavors = flavors.get_all_types(context, filters=filters)
+ flavors_list = limited_flavors.values()
sorted_flavors = sorted(flavors_list,
key=lambda item: item['flavorid'])
limited_flavors = common.limited_by_marker(sorted_flavors, req)
diff --git a/nova/api/openstack/compute/plugins/__init__.py b/nova/api/openstack/compute/plugins/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/api/openstack/compute/plugins/__init__.py
diff --git a/nova/api/openstack/compute/plugins/v3/__init__.py b/nova/api/openstack/compute/plugins/v3/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/api/openstack/compute/plugins/v3/__init__.py
diff --git a/nova/api/openstack/compute/plugins/v3/fixed_ips.py b/nova/api/openstack/compute/plugins/v3/fixed_ips.py
new file mode 100644
index 000000000..dc22a83ea
--- /dev/null
+++ b/nova/api/openstack/compute/plugins/v3/fixed_ips.py
@@ -0,0 +1,98 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2012, 2013 IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import webob.exc
+
+from nova.api.openstack import extensions
+from nova import db
+from nova import exception
+from nova.openstack.common import log as logging
+
+LOG = logging.getLogger(__name__)
+authorize = extensions.extension_authorizer('compute', 'fixed_ips')
+
+
+class FixedIPController(object):
+ def show(self, req, id):
+ """Return data about the given fixed ip."""
+ context = req.environ['nova.context']
+ authorize(context)
+
+ try:
+ fixed_ip = db.fixed_ip_get_by_address_detailed(context, id)
+ except exception.FixedIpNotFoundForAddress as ex:
+ raise webob.exc.HTTPNotFound(explanation=ex.format_message())
+
+ fixed_ip_info = {"fixed_ip": {}}
+ if not fixed_ip[1]:
+ msg = _("Fixed IP %s has been deleted") % id
+ raise webob.exc.HTTPNotFound(explanation=msg)
+
+ fixed_ip_info['fixed_ip']['cidr'] = fixed_ip[1]['cidr']
+ fixed_ip_info['fixed_ip']['address'] = fixed_ip[0]['address']
+
+ if fixed_ip[2]:
+ fixed_ip_info['fixed_ip']['hostname'] = fixed_ip[2]['hostname']
+ fixed_ip_info['fixed_ip']['host'] = fixed_ip[2]['host']
+ else:
+ fixed_ip_info['fixed_ip']['hostname'] = None
+ fixed_ip_info['fixed_ip']['host'] = None
+
+ return fixed_ip_info
+
+ def action(self, req, id, body):
+ context = req.environ['nova.context']
+ authorize(context)
+ if 'reserve' in body:
+ LOG.debug(_("Reserving IP address %s") % id)
+ return self._set_reserved(context, id, True)
+ elif 'unreserve' in body:
+ LOG.debug(_("Unreserving IP address %s") % id)
+ return self._set_reserved(context, id, False)
+ else:
+ raise webob.exc.HTTPBadRequest(
+ explanation="No valid action specified")
+
+ def _set_reserved(self, context, address, reserved):
+ try:
+ fixed_ip = db.fixed_ip_get_by_address(context, address)
+ db.fixed_ip_update(context, fixed_ip['address'],
+ {'reserved': reserved})
+ except exception.FixedIpNotFoundForAddress:
+ msg = _("Fixed IP %s not found") % address
+ raise webob.exc.HTTPNotFound(explanation=msg)
+
+ return webob.exc.HTTPAccepted()
+
+
+class FixedIPs(extensions.V3APIExtensionBase):
+ """Fixed IPs support."""
+
+ name = "FixedIPs"
+ alias = "os-fixed-ips"
+ namespace = "http://docs.openstack.org/compute/ext/fixed_ips/api/v3"
+ version = 1
+
+ def get_resources(self):
+ member_actions = {'action': 'POST'}
+ resources = [
+ extensions.ResourceExtension('os-fixed-ips',
+ FixedIPController(),
+ member_actions=member_actions)]
+ return resources
+
+ def get_controller_extensions(self):
+ return []
diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py
index 56375e317..71b4e86bf 100644
--- a/nova/api/openstack/compute/servers.py
+++ b/nova/api/openstack/compute/servers.py
@@ -28,11 +28,12 @@ from nova.api.openstack.compute.views import servers as views_servers
from nova.api.openstack import wsgi
from nova.api.openstack import xmlutil
from nova import compute
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common.rpc import common as rpc_common
+from nova.openstack.common import strutils
from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils
from nova import utils
@@ -190,7 +191,8 @@ class CommonDeserializer(wsgi.MetadataXMLDeserializer):
res_id = server_node.getAttribute('return_reservation_id')
if res_id:
- server['return_reservation_id'] = utils.bool_from_str(res_id)
+ server['return_reservation_id'] = \
+ strutils.bool_from_string(res_id)
scheduler_hints = self._extract_scheduler_hints(server_node)
if scheduler_hints:
@@ -258,7 +260,7 @@ class CommonDeserializer(wsgi.MetadataXMLDeserializer):
for attr in attributes:
value = child.getAttribute(attr)
if value:
- mapping[attr] = utils.bool_from_str(value)
+ mapping[attr] = strutils.bool_from_string(value)
block_device_mapping.append(mapping)
return block_device_mapping
else:
@@ -840,7 +842,7 @@ class Controller(wsgi.Controller):
for bdm in block_device_mapping:
self._validate_device_name(bdm["device_name"])
if 'delete_on_termination' in bdm:
- bdm['delete_on_termination'] = utils.bool_from_str(
+ bdm['delete_on_termination'] = strutils.bool_from_string(
bdm['delete_on_termination'])
ret_resv_id = False
@@ -886,7 +888,7 @@ class Controller(wsgi.Controller):
scheduler_hints = server_dict.get('scheduler_hints', {})
try:
- _get_inst_type = instance_types.get_instance_type_by_flavor_id
+ _get_inst_type = flavors.get_instance_type_by_flavor_id
inst_type = _get_inst_type(flavor_id, read_deleted="no")
(instances, resv_id) = self.compute_api.create(context,
@@ -1005,7 +1007,7 @@ class Controller(wsgi.Controller):
update_dict['access_ip_v6'] = access_ipv6.strip()
if 'auto_disk_config' in body['server']:
- auto_disk_config = utils.bool_from_str(
+ auto_disk_config = strutils.bool_from_string(
body['server']['auto_disk_config'])
update_dict['auto_disk_config'] = auto_disk_config
diff --git a/nova/api/openstack/compute/views/servers.py b/nova/api/openstack/compute/views/servers.py
index 37f6ee4f3..ff64e5f8e 100644
--- a/nova/api/openstack/compute/views/servers.py
+++ b/nova/api/openstack/compute/views/servers.py
@@ -22,7 +22,7 @@ from nova.api.openstack import common
from nova.api.openstack.compute.views import addresses as views_addresses
from nova.api.openstack.compute.views import flavors as views_flavors
from nova.api.openstack.compute.views import images as views_images
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
@@ -183,7 +183,7 @@ class ViewBuilder(common.ViewBuilder):
return ""
def _get_flavor(self, request, instance):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
if not instance_type:
LOG.warn(_("Instance has had its instance_type removed "
"from the DB"), instance=instance)
diff --git a/nova/api/openstack/extensions.py b/nova/api/openstack/extensions.py
index e7c806388..dcf6149e5 100644
--- a/nova/api/openstack/extensions.py
+++ b/nova/api/openstack/extensions.py
@@ -16,6 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+import abc
import os
import webob.dec
@@ -396,3 +397,52 @@ def soft_extension_authorizer(api_name, extension_name):
except exception.NotAuthorized:
return False
return authorize
+
+
+class V3APIExtensionBase(object):
+ """Abstract base class for all V3 API extensions.
+
+ All V3 API extensions must derive from this class and implement
+ the abstract methods get_resources and get_controller_extensions
+ even if they just return an empty list. The extensions must also
+ define the abstract properties.
+ """
+ __metaclass__ = abc.ABCMeta
+
+ @abc.abstractmethod
+ def get_resources(self):
+ """Return a list of resources extensions.
+
+ The extensions should return a list of ResourceExtension
+ objects. This list may be empty.
+ """
+ pass
+
+ @abc.abstractmethod
+ def get_controller_extensions(self):
+ """Return a list of controller extensions.
+
+ The extensions should return a list of ControllerExtension
+ objects. This list may be empty.
+ """
+ pass
+
+ @abc.abstractproperty
+ def name(self):
+ """Name of the extension."""
+ pass
+
+ @abc.abstractproperty
+ def alias(self):
+ """Alias for the extension."""
+ pass
+
+ @abc.abstractproperty
+ def namespace(self):
+ """Namespace for the extension."""
+ pass
+
+ @abc.abstractproperty
+ def version(self):
+ """Version of the extension."""
+ pass
diff --git a/nova/cells/state.py b/nova/cells/state.py
index d7646c528..403f42d47 100644
--- a/nova/cells/state.py
+++ b/nova/cells/state.py
@@ -25,9 +25,9 @@ from oslo.config import cfg
from nova.cells import rpc_driver
from nova import context
from nova.db import base
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
+from nova import utils
cell_state_manager_opts = [
cfg.IntOpt('db_check_interval',
@@ -258,7 +258,7 @@ class CellStateManager(base.Base):
'units_by_mb': disk_mb_free_units}}
self.my_cell_state.update_capacities(capacities)
- @lockutils.synchronized('cell-db-sync', 'nova-')
+ @utils.synchronized('cell-db-sync')
def _cell_db_sync(self):
"""Update status for all cells if it's time. Most calls to
this are from the check_for_update() decorator that checks
diff --git a/nova/cloudpipe/pipelib.py b/nova/cloudpipe/pipelib.py
index c395a754c..0727528c2 100644
--- a/nova/cloudpipe/pipelib.py
+++ b/nova/cloudpipe/pipelib.py
@@ -29,7 +29,7 @@ import zipfile
from oslo.config import cfg
from nova import compute
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import crypto
from nova import db
from nova import exception
@@ -126,7 +126,7 @@ class CloudPipe(object):
LOG.debug(_("Launching VPN for %s") % (context.project_id))
key_name = self.setup_key_pair(context)
group_name = self.setup_security_group(context)
- instance_type = instance_types.get_instance_type_by_name(
+ instance_type = flavors.get_instance_type_by_name(
CONF.vpn_instance_type)
instance_name = '%s%s' % (context.project_id, CONF.vpn_key_suffix)
user_data = self.get_encoded_zip(context.project_id)
diff --git a/nova/cmd/all.py b/nova/cmd/all.py
index a6426ed33..f510069b6 100644
--- a/nova/cmd/all.py
+++ b/nova/cmd/all.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011 OpenStack Foundation
diff --git a/nova/cmd/api.py b/nova/cmd/api.py
index 811171afc..a7f6313b0 100644
--- a/nova/cmd/api.py
+++ b/nova/cmd/api.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/api_ec2.py b/nova/cmd/api_ec2.py
index 2d78c58e5..2b3b942c8 100644
--- a/nova/cmd/api_ec2.py
+++ b/nova/cmd/api_ec2.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/api_metadata.py b/nova/cmd/api_metadata.py
index b2acee33c..ab235df57 100644
--- a/nova/cmd/api_metadata.py
+++ b/nova/cmd/api_metadata.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/api_os_compute.py b/nova/cmd/api_os_compute.py
index c4cb7982e..196abfef5 100644
--- a/nova/cmd/api_os_compute.py
+++ b/nova/cmd/api_os_compute.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/baremetal_deploy_helper.py b/nova/cmd/baremetal_deploy_helper.py
index dd8c652ff..2bf0bdbae 100644
--- a/nova/cmd/baremetal_deploy_helper.py
+++ b/nova/cmd/baremetal_deploy_helper.py
@@ -241,7 +241,7 @@ class Worker(threading.Thread):
{'task_state': baremetal_states.DEPLOYING})
deploy(**params)
except Exception:
- LOG.error(_('deployment to node %s failed') % node_id)
+ LOG.exception(_('deployment to node %s failed') % node_id)
db.bm_node_update(context, node_id,
{'task_state': baremetal_states.DEPLOYFAIL})
else:
diff --git a/nova/cmd/baremetal_manage.py b/nova/cmd/baremetal_manage.py
index eaf4a8416..e1224664a 100644
--- a/nova/cmd/baremetal_manage.py
+++ b/nova/cmd/baremetal_manage.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2011 X.commerce, a business unit of eBay Inc.
@@ -54,14 +53,11 @@
CLI interface for nova bare-metal management.
"""
-import gettext
import os
import sys
from oslo.config import cfg
-gettext.install('nova', unicode=1)
-
from nova import config
from nova.openstack.common import cliutils
from nova.openstack.common import log as logging
diff --git a/nova/cmd/cells.py b/nova/cmd/cells.py
index 9e6fae402..35fa9b64f 100644
--- a/nova/cmd/cells.py
+++ b/nova/cmd/cells.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
#
# Copyright (c) 2012 Rackspace Hosting
diff --git a/nova/cmd/cert.py b/nova/cmd/cert.py
index 668d8b0a4..1338b8dc8 100644
--- a/nova/cmd/cert.py
+++ b/nova/cmd/cert.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 OpenStack Foundation
diff --git a/nova/cmd/clear_rabbit_queues.py b/nova/cmd/clear_rabbit_queues.py
index b1ec0b92e..c15c2b058 100644
--- a/nova/cmd/clear_rabbit_queues.py
+++ b/nova/cmd/clear_rabbit_queues.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2011 OpenStack Foundation
@@ -23,14 +22,10 @@
"""
-import gettext
import sys
from oslo.config import cfg
-gettext.install('nova', unicode=1)
-
-
from nova import config
from nova.openstack.common import log as logging
from nova.openstack.common import rpc
diff --git a/nova/cmd/compute.py b/nova/cmd/compute.py
index 644462dde..0aae286a4 100644
--- a/nova/cmd/compute.py
+++ b/nova/cmd/compute.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/conductor.py b/nova/cmd/conductor.py
index ba1ef2032..b9723f2d2 100644
--- a/nova/cmd/conductor.py
+++ b/nova/cmd/conductor.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2012 IBM Corp.
diff --git a/nova/cmd/console.py b/nova/cmd/console.py
index 2aa099f0c..4fdc090f6 100644
--- a/nova/cmd/console.py
+++ b/nova/cmd/console.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2010 OpenStack Foundation
diff --git a/nova/cmd/consoleauth.py b/nova/cmd/consoleauth.py
index ea28a2faf..130f7ad65 100644
--- a/nova/cmd/consoleauth.py
+++ b/nova/cmd/consoleauth.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2012 OpenStack Foundation
diff --git a/nova/cmd/dhcpbridge.py b/nova/cmd/dhcpbridge.py
index 108aafcf9..faf49805d 100644
--- a/nova/cmd/dhcpbridge.py
+++ b/nova/cmd/dhcpbridge.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
@@ -21,14 +20,11 @@
Handle lease database updates from DHCP servers.
"""
-import gettext
import os
import sys
from oslo.config import cfg
-gettext.install('nova', unicode=1)
-
from nova import config
from nova import context
from nova import db
diff --git a/nova/cmd/manage.py b/nova/cmd/manage.py
index 41b97f26d..599b9a299 100644
--- a/nova/cmd/manage.py
+++ b/nova/cmd/manage.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2011 X.commerce, a business unit of eBay Inc.
@@ -54,18 +53,15 @@
CLI interface for nova management.
"""
-import gettext
import netaddr
import os
import sys
from oslo.config import cfg
-gettext.install('nova', unicode=1)
-
from nova.api.ec2 import ec2utils
from nova import availability_zones
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import config
from nova import context
from nova import db
@@ -621,7 +617,7 @@ class VmCommands(object):
context.get_admin_context(), host)
for instance in instances:
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
print ("%-10s %-15s %-10s %-10s %-26s %-9s %-9s %-9s"
" %-10s %-10s %-10s %-5d" % (instance['display_name'],
instance['host'],
@@ -889,9 +885,10 @@ class InstanceTypeCommands(object):
flavorid=None, swap=0, rxtx_factor=1.0, is_public=True):
"""Creates instance types / flavors."""
try:
- instance_types.create(name, memory, vcpus, root_gb,
- ephemeral_gb, flavorid, swap, rxtx_factor,
- is_public)
+ flavors.create(name, memory, vcpus, root_gb,
+ ephemeral_gb=ephemeral_gb, flavorid=flavorid,
+ swap=swap, rxtx_factor=rxtx_factor,
+ is_public=is_public)
except exception.InvalidInput as e:
print _("Must supply valid parameters to create instance_type")
print e
@@ -914,7 +911,7 @@ class InstanceTypeCommands(object):
def delete(self, name):
"""Marks instance types / flavors as deleted."""
try:
- instance_types.destroy(name)
+ flavors.destroy(name)
except exception.InstanceTypeNotFound:
print _("Valid instance type name is required")
return(1)
@@ -931,9 +928,9 @@ class InstanceTypeCommands(object):
"""Lists all active or specific instance types / flavors."""
try:
if name is None:
- inst_types = instance_types.get_all_types()
+ inst_types = flavors.get_all_types()
else:
- inst_types = instance_types.get_instance_type_by_name(name)
+ inst_types = flavors.get_instance_type_by_name(name)
except db_exc.DBError as e:
_db_error(e)
if isinstance(inst_types.values()[0], dict):
@@ -949,7 +946,7 @@ class InstanceTypeCommands(object):
"""Add key/value pair to specified instance type's extra_specs."""
try:
try:
- inst_type = instance_types.get_instance_type_by_name(name)
+ inst_type = flavors.get_instance_type_by_name(name)
except exception.InstanceTypeNotFoundByName as e:
print e
return(2)
@@ -971,7 +968,7 @@ class InstanceTypeCommands(object):
"""Delete the specified extra spec for instance type."""
try:
try:
- inst_type = instance_types.get_instance_type_by_name(name)
+ inst_type = flavors.get_instance_type_by_name(name)
except exception.InstanceTypeNotFoundByName as e:
print e
return(2)
diff --git a/nova/cmd/network.py b/nova/cmd/network.py
index 72eac2a19..1af0c0d7d 100644
--- a/nova/cmd/network.py
+++ b/nova/cmd/network.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/novncproxy.py b/nova/cmd/novncproxy.py
index cf70b83c5..449aea76e 100644
--- a/nova/cmd/novncproxy.py
+++ b/nova/cmd/novncproxy.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2012 OpenStack Foundation
diff --git a/nova/cmd/objectstore.py b/nova/cmd/objectstore.py
index eb8257f9c..12e08beb8 100644
--- a/nova/cmd/objectstore.py
+++ b/nova/cmd/objectstore.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
diff --git a/nova/cmd/rpc_zmq_receiver.py b/nova/cmd/rpc_zmq_receiver.py
index a587af689..f4f5214e3 100644
--- a/nova/cmd/rpc_zmq_receiver.py
+++ b/nova/cmd/rpc_zmq_receiver.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2011 OpenStack Foundation
diff --git a/nova/cmd/scheduler.py b/nova/cmd/scheduler.py
index 5bf459b97..b8e6b99aa 100644
--- a/nova/cmd/scheduler.py
+++ b/nova/cmd/scheduler.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright 2010 United States Government as represented by the
@@ -19,13 +18,10 @@
"""Starter script for Nova Scheduler."""
-import gettext
import sys
from oslo.config import cfg
-gettext.install('nova', unicode=1)
-
from nova import config
from nova.openstack.common import log as logging
from nova import service
diff --git a/nova/cmd/spicehtml5proxy.py b/nova/cmd/spicehtml5proxy.py
index 190e7e77a..8e005bcad 100644
--- a/nova/cmd/spicehtml5proxy.py
+++ b/nova/cmd/spicehtml5proxy.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2012 OpenStack Foundation
diff --git a/nova/cmd/xvpvncproxy.py b/nova/cmd/xvpvncproxy.py
index 0f62e2083..7d0c87627 100644
--- a/nova/cmd/xvpvncproxy.py
+++ b/nova/cmd/xvpvncproxy.py
@@ -1,4 +1,3 @@
-#!/usr/bin/env python
# vim: tabstop=4 shiftwidth=4 softtabstop=4
# Copyright (c) 2010 OpenStack Foundation
diff --git a/nova/compute/api.py b/nova/compute/api.py
index 512b991d7..aa0ae7d96 100644
--- a/nova/compute/api.py
+++ b/nova/compute/api.py
@@ -32,8 +32,8 @@ from oslo.config import cfg
from nova import availability_zones
from nova import block_device
+from nova.compute import flavors
from nova.compute import instance_actions
-from nova.compute import instance_types
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import task_states
@@ -53,6 +53,7 @@ from nova import notifications
from nova.openstack.common import excutils
from nova.openstack.common import jsonutils
from nova.openstack.common import log as logging
+from nova.openstack.common import strutils
from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils
import nova.policy
@@ -439,7 +440,7 @@ class API(base.Base):
if value is not None:
if prop_type == 'bool':
- value = utils.bool_from_str(value)
+ value = strutils.bool_from_string(value)
return value
@@ -496,7 +497,7 @@ class API(base.Base):
security_groups = ['default']
if not instance_type:
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
if not min_count:
min_count = 1
if not max_count:
@@ -579,7 +580,7 @@ class API(base.Base):
availability_zone, forced_host, forced_node = \
self._handle_availability_zone(availability_zone)
- system_metadata = instance_types.save_instance_type_info(
+ system_metadata = flavors.save_instance_type_info(
dict(), instance_type)
base_options = {
@@ -1165,7 +1166,7 @@ class API(base.Base):
new_instance['instance_type_id'] ==
migration_ref['new_instance_type_id']):
old_inst_type_id = migration_ref['old_instance_type_id']
- get_inst_type_by_id = instance_types.get_instance_type
+ get_inst_type_by_id = flavors.get_instance_type
try:
old_inst_type = get_inst_type_by_id(old_inst_type_id)
except exception.InstanceTypeNotFound:
@@ -1262,7 +1263,7 @@ class API(base.Base):
def restore(self, context, instance):
"""Restore a previously deleted (but not reclaimed) instance."""
# Reserve quotas
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
num_instances, quota_reservations = self._check_num_instances_quota(
context, instance_type, 1, 1)
@@ -1342,7 +1343,7 @@ class API(base.Base):
#NOTE(bcwaldon): this doesn't really belong in this class
def get_instance_type(self, context, instance_type_id):
"""Get an instance type by instance type id."""
- return instance_types.get_instance_type(instance_type_id)
+ return flavors.get_instance_type(instance_type_id)
def get(self, context, instance_id):
"""Get a single instance with the given instance_id."""
@@ -1399,7 +1400,7 @@ class API(base.Base):
filters = {}
def _remap_flavor_filter(flavor_id):
- instance_type = instance_types.get_instance_type_by_flavor_id(
+ instance_type = flavors.get_instance_type_by_flavor_id(
flavor_id)
filters['instance_type_id'] = instance_type['id']
@@ -1678,7 +1679,7 @@ class API(base.Base):
#disk format of vhd is non-shrinkable
if orig_image.get('disk_format') == 'vhd':
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
min_disk = instance_type['root_gb']
else:
#set new image values to the original image values
@@ -1721,8 +1722,10 @@ class API(base.Base):
task_states.SUSPENDING])
def reboot(self, context, instance, reboot_type):
"""Reboot the given instance."""
- if (reboot_type == 'SOFT' and
- instance['task_state'] == task_states.REBOOTING):
+ if ((reboot_type == 'SOFT' and
+ instance['task_state'] == task_states.REBOOTING) or
+ (reboot_type == 'HARD' and
+ instance['task_state'] == task_states.REBOOTING_HARD)):
raise exception.InstanceInvalidState(
attr='task_state',
instance_uuid=instance['uuid'],
@@ -1770,7 +1773,7 @@ class API(base.Base):
metadata = kwargs.get('metadata', {})
self._check_metadata_properties_quota(context, metadata)
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
if instance_type['memory_mb'] < int(image.get('min_ram') or 0):
raise exception.InstanceTypeMemoryTooSmall()
if instance_type['root_gb'] < int(image.get('min_disk') or 0):
@@ -1942,9 +1945,9 @@ class API(base.Base):
Calculate deltas required to reverse a prior upsizing
quota adjustment.
"""
- old_instance_type = instance_types.get_instance_type(
+ old_instance_type = flavors.get_instance_type(
migration_ref['old_instance_type_id'])
- new_instance_type = instance_types.get_instance_type(
+ new_instance_type = flavors.get_instance_type(
migration_ref['new_instance_type_id'])
return API._resize_quota_delta(context, new_instance_type,
@@ -1955,9 +1958,9 @@ class API(base.Base):
"""
Calculate deltas required to adjust quota for an instance downsize.
"""
- old_instance_type = instance_types.extract_instance_type(instance,
+ old_instance_type = flavors.extract_instance_type(instance,
'old_')
- new_instance_type = instance_types.extract_instance_type(instance,
+ new_instance_type = flavors.extract_instance_type(instance,
'new_')
return API._resize_quota_delta(context, new_instance_type,
old_instance_type, 1, -1)
@@ -1977,7 +1980,7 @@ class API(base.Base):
the original flavor_id. If flavor_id is not None, the instance should
be migrated to a new host and resized to the new flavor_id.
"""
- current_instance_type = instance_types.extract_instance_type(instance)
+ current_instance_type = flavors.extract_instance_type(instance)
# If flavor_id is not provided, only migrate the instance.
if not flavor_id:
@@ -1985,7 +1988,7 @@ class API(base.Base):
instance=instance)
new_instance_type = current_instance_type
else:
- new_instance_type = instance_types.get_instance_type_by_flavor_id(
+ new_instance_type = flavors.get_instance_type_by_flavor_id(
flavor_id, read_deleted="no")
current_instance_type_name = current_instance_type['name']
diff --git a/nova/compute/cells_api.py b/nova/compute/cells_api.py
index 9c0f72c97..7168313ec 100644
--- a/nova/compute/cells_api.py
+++ b/nova/compute/cells_api.py
@@ -20,7 +20,7 @@ from nova import block_device
from nova.cells import rpcapi as cells_rpcapi
from nova.cells import utils as cells_utils
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import vm_states
from nova import exception
@@ -338,19 +338,19 @@ class ComputeCellsAPI(compute_api.API):
# specified flavor_id is valid and exists. We'll need to load
# it again, but that should be safe.
- old_instance_type = instance_types.extract_instance_type(instance)
+ old_instance_type = flavors.extract_instance_type(instance)
if not flavor_id:
new_instance_type = old_instance_type
else:
- new_instance_type = instance_types.get_instance_type_by_flavor_id(
+ new_instance_type = flavors.get_instance_type_by_flavor_id(
flavor_id, read_deleted="no")
# NOTE(johannes): Later, when the resize is confirmed or reverted,
# the superclass implementations of those methods will need access
# to a local migration record for quota reasons. We don't need
# source and/or destination information, just the old and new
- # instance_types. Status is set to 'finished' since nothing else
+ # flavors. Status is set to 'finished' since nothing else
# will update the status along the way.
self.db.migration_create(context.elevated(),
{'instance_uuid': instance['uuid'],
diff --git a/nova/compute/claims.py b/nova/compute/claims.py
index fc170839f..935c0f2aa 100644
--- a/nova/compute/claims.py
+++ b/nova/compute/claims.py
@@ -159,28 +159,33 @@ class Claim(NopClaim):
"""Test if the given type of resource needed for a claim can be safely
allocated.
"""
- msg = _("Total %(type_)s: %(total)d %(unit)s, used: %(used)d %(unit)s")
- LOG.audit(msg % locals(), instance=self.instance)
+ LOG.audit(_('Total %(type)s: %(total)d %(unit)s, used: %(used).02f '
+ '%(unit)s'),
+ {'type': type_, 'total': total, 'unit': unit, 'used': used},
+ instance=self.instance)
if limit is None:
# treat resource as unlimited:
- LOG.audit(_("%(type_)s limit not specified, defaulting to "
- "unlimited") % locals(), instance=self.instance)
+ LOG.audit(_('%(type)s limit not specified, defaulting to '
+ 'unlimited'), {'type': type_}, instance=self.instance)
return True
free = limit - used
# Oversubscribed resource policy info:
- msg = _("%(type_)s limit: %(limit)d %(unit)s, free: %(free)d "
- "%(unit)s") % locals()
- LOG.audit(msg, instance=self.instance)
+ LOG.audit(_('%(type)s limit: %(limit).02f %(unit)s, free: %(free).02f '
+ '%(unit)s'),
+ {'type': type_, 'limit': limit, 'free': free, 'unit': unit},
+ instance=self.instance)
can_claim = requested <= free
if not can_claim:
- msg = _("Unable to claim resources. Free %(type_)s %(free)d "
- "%(unit)s < requested %(requested)d %(unit)s") % locals()
- LOG.info(msg, instance=self.instance)
+ LOG.info(_('Unable to claim resources. Free %(type)s %(free).02f '
+ '%(unit)s < requested %(requested)d %(unit)s'),
+ {'type': type_, 'free': free, 'unit': unit,
+ 'requested': requested},
+ instance=self.instance)
return can_claim
diff --git a/nova/compute/instance_types.py b/nova/compute/flavors.py
index 871761986..2958769e1 100644
--- a/nova/compute/instance_types.py
+++ b/nova/compute/flavors.py
@@ -30,6 +30,7 @@ from nova import db
from nova import exception
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common import log as logging
+from nova.openstack.common import strutils
from nova import utils
instance_type_opts = [
@@ -65,18 +66,11 @@ system_metadata_instance_type_props = {
}
-def create(name, memory, vcpus, root_gb, ephemeral_gb=None, flavorid=None,
- swap=None, rxtx_factor=None, is_public=True):
+def create(name, memory, vcpus, root_gb, ephemeral_gb=0, flavorid=None,
+ swap=0, rxtx_factor=1.0, is_public=True):
"""Creates instance types."""
-
- if flavorid is None or flavorid == '':
+ if not flavorid:
flavorid = uuid.uuid4()
- if swap is None:
- swap = 0
- if rxtx_factor is None:
- rxtx_factor = 1.0
- if ephemeral_gb is None:
- ephemeral_gb = 0
kwargs = {
'memory_mb': memory,
@@ -96,13 +90,23 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb=None, flavorid=None,
msg = _("names can only contain [a-zA-Z0-9_.- ]")
raise exception.InvalidInput(reason=msg)
- # ensure some attributes are integers and greater than or equal to 0
- for option in ['memory_mb', 'vcpus', 'root_gb', 'ephemeral_gb', 'swap']:
+ # Some attributes are positive ( > 0) integers
+ for option in ['memory_mb', 'vcpus']:
+ try:
+ kwargs[option] = int(kwargs[option])
+ assert kwargs[option] > 0
+ except (ValueError, AssertionError):
+ msg = _("'%s' argument must be greater than 0") % option
+ raise exception.InvalidInput(reason=msg)
+
+ # Some attributes are non-negative ( >= 0) integers
+ for option in ['root_gb', 'ephemeral_gb', 'swap']:
try:
kwargs[option] = int(kwargs[option])
assert kwargs[option] >= 0
except (ValueError, AssertionError):
- msg = _("'%s' argument must be a positive integer") % option
+ msg = _("'%s' argument must be greater than or equal"
+ " to 0") % option
raise exception.InvalidInput(reason=msg)
# rxtx_factor should be a positive float
@@ -113,14 +117,6 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb=None, flavorid=None,
msg = _("'rxtx_factor' argument must be a positive float")
raise exception.InvalidInput(reason=msg)
- # some value are required to be nonzero, not just positive
- for option in ['memory_mb', 'vcpus']:
- try:
- assert kwargs[option] > 0
- except AssertionError:
- msg = _("'%s' argument must be greater than 0") % option
- raise exception.InvalidInput(reason=msg)
-
kwargs['name'] = name
# NOTE(vish): Internally, flavorid is stored as a string but it comes
# in through json as an integer, so we convert it here.
@@ -130,7 +126,7 @@ def create(name, memory, vcpus, root_gb, ephemeral_gb=None, flavorid=None,
if not utils.is_valid_boolstr(is_public):
msg = _("is_public must be a boolean")
raise exception.InvalidInput(reason=msg)
- kwargs['is_public'] = utils.bool_from_str(is_public)
+ kwargs['is_public'] = strutils.bool_from_string(is_public)
try:
return db.instance_type_create(context.get_admin_context(), kwargs)
@@ -150,7 +146,7 @@ def destroy(name):
def get_all_types(ctxt=None, inactive=False, filters=None):
- """Get all non-deleted instance_types.
+ """Get all non-deleted flavors.
Pass true as argument if you want deleted instance types returned also.
"""
diff --git a/nova/compute/manager.py b/nova/compute/manager.py
index 70d88117d..7bc8281d4 100755
--- a/nova/compute/manager.py
+++ b/nova/compute/manager.py
@@ -43,7 +43,7 @@ from nova import block_device
from nova.cells import rpcapi as cells_rpcapi
from nova.cloudpipe import pipelib
from nova import compute
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import resource_tracker
from nova.compute import rpcapi as compute_rpcapi
@@ -62,7 +62,6 @@ from nova.network import model as network_model
from nova.network.security_group import openstack_driver
from nova.openstack.common import excutils
from nova.openstack.common import jsonutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common.notifier import api as notifier
from nova.openstack.common import periodic_task
@@ -699,7 +698,7 @@ class ComputeManager(manager.SchedulerDependentManager):
Synchronise the call beacuse we may still be in the middle of
creating the instance.
"""
- @lockutils.synchronized(instance['uuid'], 'nova-')
+ @utils.synchronized(instance['uuid'])
def _sync_refresh():
return self.driver.refresh_instance_security_rules(instance)
return _sync_refresh()
@@ -1114,7 +1113,7 @@ class ComputeManager(manager.SchedulerDependentManager):
# TODO(jk0): Should size be required in the image service?
return image_meta
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
allowed_size_gb = instance_type['root_gb']
# NOTE(johannes): root_gb is allowed to be 0 for legacy reasons
@@ -1313,7 +1312,7 @@ class ComputeManager(manager.SchedulerDependentManager):
if filter_properties is None:
filter_properties = {}
- @lockutils.synchronized(instance['uuid'], 'nova-')
+ @utils.synchronized(instance['uuid'])
def do_run_instance():
self._run_instance(context, request_spec,
filter_properties, requested_networks, injected_files,
@@ -1465,7 +1464,7 @@ class ComputeManager(manager.SchedulerDependentManager):
if not bdms:
bdms = self._get_instance_volume_bdms(context, instance)
- @lockutils.synchronized(instance['uuid'], 'nova-')
+ @utils.synchronized(instance['uuid'])
def do_terminate_instance(instance, bdms):
try:
self._delete_instance(context, instance, bdms,
@@ -1735,7 +1734,7 @@ class ComputeManager(manager.SchedulerDependentManager):
task_state=task_states.STOPPING,
terminated_at=timeutils.utcnow(),
progress=0)
- self.stop_instance(context, instance['uuid'])
+ self.stop_instance(context, instance)
self._notify_about_instance_usage(
context, instance, "rebuild.end",
@@ -2129,15 +2128,15 @@ class ComputeManager(manager.SchedulerDependentManager):
"""
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
if restore_old:
- instance_type = instance_types.extract_instance_type(instance,
+ instance_type = flavors.extract_instance_type(instance,
'old_')
- sys_meta = instance_types.save_instance_type_info(sys_meta,
+ sys_meta = flavors.save_instance_type_info(sys_meta,
instance_type)
else:
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
- instance_types.delete_instance_type_info(sys_meta, 'old_')
- instance_types.delete_instance_type_info(sys_meta, 'new_')
+ flavors.delete_instance_type_info(sys_meta, 'old_')
+ flavors.delete_instance_type_info(sys_meta, 'new_')
return sys_meta, instance_type
@@ -2352,7 +2351,7 @@ class ComputeManager(manager.SchedulerDependentManager):
# NOTE(danms): Stash the new instance_type to avoid having to
# look it up in the database later
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
- instance_types.save_instance_type_info(sys_meta, instance_type,
+ flavors.save_instance_type_info(sys_meta, instance_type,
prefix='new_')
instance = self._instance_update(context, instance['uuid'],
system_metadata=sys_meta)
@@ -2519,15 +2518,15 @@ class ComputeManager(manager.SchedulerDependentManager):
resize_instance = False
old_instance_type_id = migration['old_instance_type_id']
new_instance_type_id = migration['new_instance_type_id']
- old_instance_type = instance_types.extract_instance_type(instance)
+ old_instance_type = flavors.extract_instance_type(instance)
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
- instance_types.save_instance_type_info(sys_meta,
+ flavors.save_instance_type_info(sys_meta,
old_instance_type,
prefix='old_')
if old_instance_type_id != new_instance_type_id:
- instance_type = instance_types.extract_instance_type(instance,
+ instance_type = flavors.extract_instance_type(instance,
prefix='new_')
- instance_types.save_instance_type_info(sys_meta, instance_type)
+ flavors.save_instance_type_info(sys_meta, instance_type)
instance = self._instance_update(
context,
@@ -2928,7 +2927,7 @@ class ComputeManager(manager.SchedulerDependentManager):
def reserve_block_device_name(self, context, instance, device,
volume_id=None):
- @lockutils.synchronized(instance['uuid'], 'nova-')
+ @utils.synchronized(instance['uuid'])
def do_reserve():
bdms = self.conductor_api.block_device_mapping_get_all_by_instance(
context, instance)
@@ -3224,7 +3223,8 @@ class ComputeManager(manager.SchedulerDependentManager):
raise exception.FixedIpNotFoundForInstance(
instance_uuid=instance['uuid'])
- self.driver.pre_live_migration(context, instance,
+ pre_live_migration_data = self.driver.pre_live_migration(context,
+ instance,
block_device_info,
self._legacy_nw_info(network_info),
migrate_data)
@@ -3246,6 +3246,8 @@ class ComputeManager(manager.SchedulerDependentManager):
if block_migration:
self.driver.pre_block_migration(context, instance, disk)
+ return pre_live_migration_data
+
def live_migration(self, context, dest, instance,
block_migration=False, migrate_data=None):
"""Executing live migration.
@@ -3257,14 +3259,18 @@ class ComputeManager(manager.SchedulerDependentManager):
:param migrate_data: implementation specific params
"""
+ # Create a local copy since we'll be modifying the dictionary
+ migrate_data = dict(migrate_data or {})
try:
if block_migration:
disk = self.driver.get_instance_disk_info(instance['name'])
else:
disk = None
- self.compute_rpcapi.pre_live_migration(context, instance,
- block_migration, disk, dest, migrate_data)
+ pre_migration_data = self.compute_rpcapi.pre_live_migration(
+ context, instance,
+ block_migration, disk, dest, migrate_data)
+ migrate_data['pre_live_migration_result'] = pre_migration_data
except Exception:
with excutils.save_and_reraise_exception():
@@ -4111,6 +4117,13 @@ class ComputeManager(manager.SchedulerDependentManager):
reservations=None):
try:
yield
+ except exception.InstanceFaultRollback, error:
+ self._quota_rollback(context, reservations)
+ msg = _("Setting instance back to ACTIVE after: %s")
+ LOG.info(msg % error, instance_uuid=instance_uuid)
+ self._instance_update(context, instance_uuid,
+ vm_state=vm_states.ACTIVE)
+ raise error.inner_exception
except Exception, error:
with excutils.save_and_reraise_exception():
self._quota_rollback(context, reservations)
diff --git a/nova/compute/resource_tracker.py b/nova/compute/resource_tracker.py
index 0ee707922..ef91063b4 100644
--- a/nova/compute/resource_tracker.py
+++ b/nova/compute/resource_tracker.py
@@ -22,7 +22,7 @@ model.
from oslo.config import cfg
from nova.compute import claims
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import task_states
from nova.compute import vm_states
from nova import conductor
@@ -30,8 +30,8 @@ from nova import context
from nova import exception
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
+from nova import utils
resource_tracker_opts = [
cfg.IntOpt('reserved_host_disk_mb', default=0,
@@ -65,7 +65,7 @@ class ResourceTracker(object):
self.tracked_migrations = {}
self.conductor_api = conductor.API()
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def instance_claim(self, context, instance_ref, limits=None):
"""Indicate that some resources are needed for an upcoming compute
instance build operation.
@@ -115,7 +115,7 @@ class ResourceTracker(object):
else:
raise exception.ComputeResourcesUnavailable()
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def resize_claim(self, context, instance_ref, instance_type, limits=None):
"""Indicate that resources are needed for a resize operation to this
compute host.
@@ -160,7 +160,7 @@ class ResourceTracker(object):
be done while the COMPUTE_RESOURCES_SEMAPHORE is held so the resource
claim will not be lost if the audit process starts.
"""
- old_instance_type = instance_types.extract_instance_type(instance)
+ old_instance_type = flavors.extract_instance_type(instance)
return self.conductor_api.migration_create(context, instance,
{'dest_compute': self.host,
@@ -183,7 +183,7 @@ class ResourceTracker(object):
instance_ref['launched_on'] = self.host
instance_ref['node'] = self.nodename
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def abort_instance_claim(self, instance):
"""Remove usage from the given instance."""
# flag the instance as deleted to revert the resource usage
@@ -194,7 +194,7 @@ class ResourceTracker(object):
ctxt = context.get_admin_context()
self._update(ctxt, self.compute_node)
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def drop_resize_claim(self, instance, instance_type=None, prefix='new_'):
"""Remove usage for an incoming/outgoing migration."""
if instance['uuid'] in self.tracked_migrations:
@@ -212,7 +212,7 @@ class ResourceTracker(object):
ctxt = context.get_admin_context()
self._update(ctxt, self.compute_node)
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def update_usage(self, context, instance):
"""Update the resource usage and stats after a change in an
instance
@@ -232,7 +232,7 @@ class ResourceTracker(object):
def disabled(self):
return self.compute_node is None
- @lockutils.synchronized(COMPUTE_RESOURCE_SEMAPHORE, 'nova-')
+ @utils.synchronized(COMPUTE_RESOURCE_SEMAPHORE)
def update_available_resource(self, context):
"""Override in-memory calculations of compute node resource usage based
on data audited from the hypervisor layer.
@@ -580,7 +580,7 @@ class ResourceTracker(object):
instance_type_id = instance['instance_type_id']
try:
- return instance_types.extract_instance_type(instance, prefix)
+ return flavors.extract_instance_type(instance, prefix)
except KeyError:
return self.conductor_api.instance_type_get(context,
instance_type_id)
diff --git a/nova/compute/utils.py b/nova/compute/utils.py
index e13914264..1ce115b20 100644
--- a/nova/compute/utils.py
+++ b/nova/compute/utils.py
@@ -23,7 +23,7 @@ import traceback
from oslo.config import cfg
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.network import model as network_model
from nova import notifications
@@ -151,7 +151,7 @@ def get_device_name_for_instance(context, instance, bdms, device):
# NOTE(vish): remove this when xenapi is properly setting
# default_ephemeral_device and default_swap_device
if driver.compute_driver_matches('xenapi.XenAPIDriver'):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
if instance_type['ephemeral_gb']:
used_letters.add('b')
diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py
index 9213b36b3..1fc273bec 100644
--- a/nova/db/sqlalchemy/api.py
+++ b/nova/db/sqlalchemy/api.py
@@ -80,6 +80,9 @@ get_engine = db_session.get_engine
get_session = db_session.get_session
+_SHADOW_TABLE_PREFIX = 'shadow_'
+
+
def get_backend():
"""The backend is this module itself."""
return sys.modules[__name__]
@@ -727,7 +730,7 @@ def floating_ip_bulk_destroy(context, ips):
@require_context
-def floating_ip_create(context, values, session=None):
+def floating_ip_create(context, values):
floating_ip_ref = models.FloatingIp()
floating_ip_ref.update(values)
try:
@@ -887,13 +890,10 @@ def floating_ip_get_by_fixed_address(context, fixed_address):
@require_context
-def floating_ip_get_by_fixed_ip_id(context, fixed_ip_id, session=None):
- if not session:
- session = get_session()
-
- return model_query(context, models.FloatingIp, session=session).\
- filter_by(fixed_ip_id=fixed_ip_id).\
- all()
+def floating_ip_get_by_fixed_ip_id(context, fixed_ip_id):
+ return model_query(context, models.FloatingIp).\
+ filter_by(fixed_ip_id=fixed_ip_id).\
+ all()
@require_context
@@ -1914,15 +1914,23 @@ def instance_get_floating_address(context, instance_id):
@require_context
def instance_floating_address_get_all(context, instance_uuid):
- fixed_ips = fixed_ip_get_by_instance(context, instance_uuid)
+ if not uuidutils.is_uuid_like(instance_uuid):
+ raise exception.InvalidUUID(uuid=instance_uuid)
+
+ fixed_ip_ids = model_query(context, models.FixedIp.id,
+ base_model=models.FixedIp).\
+ filter_by(instance_uuid=instance_uuid).\
+ all()
+ if not fixed_ip_ids:
+ raise exception.FixedIpNotFoundForInstance(instance_uuid=instance_uuid)
- floating_ips = []
- for fixed_ip in fixed_ips:
- _floating_ips = floating_ip_get_by_fixed_ip_id(context,
- fixed_ip['id'])
- floating_ips += _floating_ips
+ fixed_ip_ids = [fixed_ip_id.id for fixed_ip_id in fixed_ip_ids]
- return floating_ips
+ floating_ips = model_query(context, models.FloatingIp.address,
+ base_model=models.FloatingIp).\
+ filter(models.FloatingIp.fixed_ip_id.in_(fixed_ip_ids)).\
+ all()
+ return [floating_ip.address for floating_ip in floating_ips]
@require_admin_context
@@ -3018,8 +3026,19 @@ def _block_device_mapping_get_query(context, session=None):
return model_query(context, models.BlockDeviceMapping, session=session)
+def _scrub_empty_str_values(dct, keys_to_scrub):
+ """
+ Remove any keys found in sequence keys_to_scrub from the dict
+ if they have the value ''.
+ """
+ for key in keys_to_scrub:
+ if key in dct and dct[key] == '':
+ del dct[key]
+
+
@require_context
def block_device_mapping_create(context, values):
+ _scrub_empty_str_values(values, ['volume_size'])
bdm_ref = models.BlockDeviceMapping()
bdm_ref.update(values)
bdm_ref.save()
@@ -3027,6 +3046,7 @@ def block_device_mapping_create(context, values):
@require_context
def block_device_mapping_update(context, bdm_id, values):
+ _scrub_empty_str_values(values, ['volume_size'])
_block_device_mapping_get_query(context).\
filter_by(id=bdm_id).\
update(values)
@@ -3034,6 +3054,7 @@ def block_device_mapping_update(context, bdm_id, values):
@require_context
def block_device_mapping_update_or_create(context, values):
+ _scrub_empty_str_values(values, ['volume_size'])
session = get_session()
with session.begin():
result = _block_device_mapping_get_query(context, session=session).\
@@ -4995,7 +5016,7 @@ def archive_deleted_rows_for_table(context, tablename, max_rows):
metadata.bind = engine
table = Table(tablename, metadata, autoload=True)
default_deleted_value = _get_default_deleted_value(table)
- shadow_tablename = "shadow_" + tablename
+ shadow_tablename = _SHADOW_TABLE_PREFIX + tablename
rows_archived = 0
try:
shadow_table = Table(shadow_tablename, metadata, autoload=True)
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/178_add_index_to_compute_node_stats.py b/nova/db/sqlalchemy/migrate_repo/versions/178_add_index_to_compute_node_stats.py
new file mode 100644
index 000000000..c6a4d1527
--- /dev/null
+++ b/nova/db/sqlalchemy/migrate_repo/versions/178_add_index_to_compute_node_stats.py
@@ -0,0 +1,37 @@
+# Copyright 2013 Rackspace Hosting
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from sqlalchemy import Index, MetaData, Table
+
+
+TABLE_NAME = 'compute_node_stats'
+IDX_NAME = 'compute_node_stats_node_id_and_deleted_idx'
+
+
+def upgrade(migrate_engine):
+ """Add an index to make the scheduler lookups of compute_nodes and joined
+ compute_node_stats more efficient.
+ """
+ meta = MetaData(bind=migrate_engine)
+ cn_stats = Table(TABLE_NAME, meta, autoload=True)
+ idx = Index(IDX_NAME, cn_stats.c.compute_node_id, cn_stats.c.deleted)
+ idx.create(migrate_engine)
+
+
+def downgrade(migrate_engine):
+ meta = MetaData(bind=migrate_engine)
+ cn_stats = Table(TABLE_NAME, meta, autoload=True)
+ idx = Index(IDX_NAME, cn_stats.c.compute_node_id, cn_stats.c.deleted)
+ idx.drop(migrate_engine)
diff --git a/nova/db/sqlalchemy/migrate_repo/versions/179_change_cells_deleted_to_int.py b/nova/db/sqlalchemy/migrate_repo/versions/179_change_cells_deleted_to_int.py
new file mode 100644
index 000000000..78c9f46f2
--- /dev/null
+++ b/nova/db/sqlalchemy/migrate_repo/versions/179_change_cells_deleted_to_int.py
@@ -0,0 +1,209 @@
+from sqlalchemy import CheckConstraint
+from sqlalchemy.engine import reflection
+from sqlalchemy.ext.compiler import compiles
+from sqlalchemy import MetaData, Table, Column, Index
+from sqlalchemy import select
+from sqlalchemy.sql.expression import UpdateBase
+from sqlalchemy import Integer, Boolean
+from sqlalchemy.types import NullType, BigInteger
+
+
+all_tables = ['cells']
+# note(boris-42): We can't do migration for the dns_domains table because it
+# doesn't have `id` column.
+
+
+class InsertFromSelect(UpdateBase):
+ def __init__(self, table, select):
+ self.table = table
+ self.select = select
+
+
+@compiles(InsertFromSelect)
+def visit_insert_from_select(element, compiler, **kw):
+ return "INSERT INTO %s %s" % (
+ compiler.process(element.table, asfrom=True),
+ compiler.process(element.select))
+
+
+def get_default_deleted_value(table):
+ if isinstance(table.c.id.type, Integer):
+ return 0
+ # NOTE(boris-42): There is only one other type that is used as id (String)
+ return ""
+
+
+def upgrade_enterprise_dbs(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ for table_name in all_tables:
+ table = Table(table_name, meta, autoload=True)
+
+ new_deleted = Column('new_deleted', table.c.id.type,
+ default=get_default_deleted_value(table))
+ new_deleted.create(table, populate_default=True)
+
+ table.update().\
+ where(table.c.deleted == True).\
+ values(new_deleted=table.c.id).\
+ execute()
+ table.c.deleted.drop()
+ table.c.new_deleted.alter(name="deleted")
+
+
+def upgrade(migrate_engine):
+ if migrate_engine.name != "sqlite":
+ return upgrade_enterprise_dbs(migrate_engine)
+
+ # NOTE(boris-42): sqlaclhemy-migrate can't drop column with check
+ # constraints in sqlite DB and our `deleted` column has
+ # 2 check constraints. So there is only one way to remove
+ # these constraints:
+ # 1) Create new table with the same columns, constraints
+ # and indexes. (except deleted column).
+ # 2) Copy all data from old to new table.
+ # 3) Drop old table.
+ # 4) Rename new table to old table name.
+ insp = reflection.Inspector.from_engine(migrate_engine)
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ for table_name in all_tables:
+ table = Table(table_name, meta, autoload=True)
+ default_deleted_value = get_default_deleted_value(table)
+
+ columns = []
+ for column in table.columns:
+ column_copy = None
+ if column.name != "deleted":
+ # NOTE(boris-42): BigInteger is not supported by sqlite, so
+ # after copy it will have NullType, other
+ # types that are used in Nova are supported by
+ # sqlite.
+ if isinstance(column.type, NullType):
+ column_copy = Column(column.name, BigInteger(), default=0)
+ else:
+ column_copy = column.copy()
+ else:
+ column_copy = Column('deleted', table.c.id.type,
+ default=default_deleted_value)
+ columns.append(column_copy)
+
+ def is_deleted_column_constraint(constraint):
+ # NOTE(boris-42): There is no other way to check is CheckConstraint
+ # associated with deleted column.
+ if not isinstance(constraint, CheckConstraint):
+ return False
+ sqltext = str(constraint.sqltext)
+ return (sqltext.endswith("deleted in (0, 1)") or
+ sqltext.endswith("deleted IN (:deleted_1, :deleted_2)"))
+
+ constraints = []
+ for constraint in table.constraints:
+ if not is_deleted_column_constraint(constraint):
+ constraints.append(constraint.copy())
+
+ new_table = Table(table_name + "__tmp__", meta,
+ *(columns + constraints))
+ new_table.create()
+
+ indexes = []
+ for index in insp.get_indexes(table_name):
+ column_names = [new_table.c[c] for c in index['column_names']]
+ indexes.append(Index(index["name"],
+ *column_names,
+ unique=index["unique"]))
+
+ ins = InsertFromSelect(new_table, table.select())
+ migrate_engine.execute(ins)
+
+ table.drop()
+ [index.create(migrate_engine) for index in indexes]
+
+ new_table.rename(table_name)
+ new_table.update().\
+ where(new_table.c.deleted == True).\
+ values(deleted=new_table.c.id).\
+ execute()
+
+ # NOTE(boris-42): Fix value of deleted column: False -> "" or 0.
+ new_table.update().\
+ where(new_table.c.deleted == False).\
+ values(deleted=default_deleted_value).\
+ execute()
+
+
+def downgrade_enterprise_dbs(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ for table_name in all_tables:
+ table = Table(table_name, meta, autoload=True)
+
+ old_deleted = Column('old_deleted', Boolean, default=False)
+ old_deleted.create(table, populate_default=False)
+
+ table.update().\
+ where(table.c.deleted == table.c.id).\
+ values(old_deleted=True).\
+ execute()
+
+ table.c.deleted.drop()
+ table.c.old_deleted.alter(name="deleted")
+
+
+def downgrade(migrate_engine):
+ if migrate_engine.name != "sqlite":
+ return downgrade_enterprise_dbs(migrate_engine)
+
+ insp = reflection.Inspector.from_engine(migrate_engine)
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ for table_name in all_tables:
+ table = Table(table_name, meta, autoload=True)
+
+ columns = []
+ for column in table.columns:
+ column_copy = None
+ if column.name != "deleted":
+ if isinstance(column.type, NullType):
+ column_copy = Column(column.name, BigInteger(), default=0)
+ else:
+ column_copy = column.copy()
+ else:
+ column_copy = Column('deleted', Boolean, default=0)
+ columns.append(column_copy)
+
+ constraints = [constraint.copy() for constraint in table.constraints]
+
+ new_table = Table(table_name + "__tmp__", meta,
+ *(columns + constraints))
+ new_table.create()
+
+ indexes = []
+ for index in insp.get_indexes(table_name):
+ column_names = [new_table.c[c] for c in index['column_names']]
+ indexes.append(Index(index["name"],
+ *column_names,
+ unique=index["unique"]))
+
+ c_select = []
+ for c in table.c:
+ if c.name != "deleted":
+ c_select.append(c)
+ else:
+ c_select.append(table.c.deleted == table.c.id)
+
+ ins = InsertFromSelect(new_table, select(c_select))
+ migrate_engine.execute(ins)
+
+ table.drop()
+ [index.create(migrate_engine) for index in indexes]
+
+ new_table.rename(table_name)
+ new_table.update().\
+ where(new_table.c.deleted == new_table.c.id).\
+ values(deleted=True).\
+ execute()
diff --git a/nova/db/sqlalchemy/models.py b/nova/db/sqlalchemy/models.py
index c4a22f4c5..f10bc8c32 100644
--- a/nova/db/sqlalchemy/models.py
+++ b/nova/db/sqlalchemy/models.py
@@ -552,6 +552,7 @@ class ProviderFirewallRule(BASE, NovaBase):
class KeyPair(BASE, NovaBase):
"""Represents a public key pair for ssh."""
__tablename__ = 'key_pairs'
+ __table_args__ = (schema.UniqueConstraint("name", "user_id"), )
id = Column(Integer, primary_key=True)
name = Column(String(255))
diff --git a/nova/db/sqlalchemy/utils.py b/nova/db/sqlalchemy/utils.py
index f8ccbb6f2..f0eece661 100644
--- a/nova/db/sqlalchemy/utils.py
+++ b/nova/db/sqlalchemy/utils.py
@@ -24,7 +24,7 @@ from sqlalchemy.sql.expression import UpdateBase, literal_column
from sqlalchemy.sql import select
from sqlalchemy.types import NullType
-
+from nova.db.sqlalchemy import api as db
from nova import exception
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
@@ -33,6 +33,16 @@ from nova.openstack.common import timeutils
LOG = logging.getLogger(__name__)
+def get_table(engine, name):
+ """Returns an sqlalchemy table dynamically from db.
+
+ Needed because the models don't work for us in migrations
+ as models will be far out of sync with the current data."""
+ metadata = MetaData()
+ metadata.bind = engine
+ return Table(name, metadata, autoload=True)
+
+
class InsertFromSelect(UpdateBase):
def __init__(self, table, select):
self.table = table
@@ -46,6 +56,23 @@ def visit_insert_from_select(element, compiler, **kw):
compiler.process(element.select))
+def _get_not_supported_column(col_name_col_instance, column_name):
+ try:
+ column = col_name_col_instance[column_name]
+ except Exception as e:
+ msg = _("Please specify column %s in col_name_col_instance "
+ "param. It is required because column has unsupported "
+ "type by sqlite).")
+ raise exception.NovaException(msg % column_name)
+
+ if not isinstance(column, Column):
+ msg = _("col_name_col_instance param has wrong type of "
+ "column instance for column %s It should be instance "
+ "of sqlalchemy.Column.")
+ raise exception.NovaException(msg % column_name)
+ return column
+
+
def _drop_unique_constraint_in_sqlite(migrate_engine, table_name, uc_name,
**col_name_col_instance):
insp = reflection.Inspector.from_engine(migrate_engine)
@@ -55,19 +82,8 @@ def _drop_unique_constraint_in_sqlite(migrate_engine, table_name, uc_name,
columns = []
for column in table.columns:
if isinstance(column.type, NullType):
- try:
- new_column = col_name_col_instance.get(column.name)
- except Exception as e:
- msg = _("Please specify column %s in col_name_col_instance "
- "param. It is required because column has unsupported "
- "type by sqlite).")
- raise exception.NovaException(msg % column.name)
-
- if not isinstance(new_column, Column):
- msg = _("col_name_col_instance param has wrong type of "
- "column instance for column %s It should be instance "
- "of sqlalchemy.Column.")
- raise exception.NovaException(msg % column.name)
+ new_column = _get_not_supported_column(col_name_col_instance,
+ column.name)
columns.append(new_column)
else:
columns.append(column.copy())
@@ -166,3 +182,85 @@ def drop_old_duplicate_entries_from_table(migrate_engine, table_name,
else:
delete_statement = table.delete().where(delete_condition)
migrate_engine.execute(delete_statement)
+
+
+def check_shadow_table(migrate_engine, table_name):
+ """
+ This method checks that table with ``table_name`` and corresponding shadow
+ table have same columns.
+ """
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ table = Table(table_name, meta, autoload=True)
+ shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta,
+ autoload=True)
+
+ columns = dict([(c.name, c) for c in table.columns])
+ shadow_columns = dict([(c.name, c) for c in shadow_table.columns])
+
+ for name, column in columns.iteritems():
+ if name not in shadow_columns:
+ raise exception.NovaException(
+ _("Missing column %(table)s.%(column)s in shadow table")
+ % {'column': name, 'table': shadow_table.name})
+ shadow_column = shadow_columns[name]
+
+ if not isinstance(shadow_column.type, type(column.type)):
+ raise exception.NovaException(
+ _("Different types in %(table)s.%(column)s and shadow table: "
+ "%(c_type)s %(shadow_c_type)s")
+ % {'column': name, 'table': table.name,
+ 'c_type': column.type,
+ 'shadow_c_type': shadow_column.type})
+
+ for name, column in shadow_columns.iteritems():
+ if name not in columns:
+ raise exception.NovaException(
+ _("Extra column %(table)%.%(column)s in shadow table")
+ % {'column': name, 'table': shadow_table.name})
+ return True
+
+
+def create_shadow_table(migrate_engine, table_name=None, table=None,
+ **col_name_col_instance):
+ """
+ This method create shadow table for table with name ``table_name`` or table
+ instance ``table``.
+ :param table_name: Autoload table with this name and create shadow table
+ :param table: Autoloaded table, so just create corresponding shadow table.
+ :param col_name_col_instance: contains pair column_name=column_instance.
+ column_instance is instance of Column. These params
+ are required only for columns that have unsupported
+ types by sqlite. For example BigInteger.
+ """
+ meta = MetaData()
+ meta.bind = migrate_engine
+
+ if table_name is None and table is None:
+ raise exception.NovaException(_("Specify `table_name` or `table` "
+ "param"))
+ if not (table_name is None or table is None):
+ raise exception.NovaException(_("Specify only one param `table_name` "
+ "`table`"))
+
+ if table is None:
+ table = Table(table_name, meta, autoload=True)
+
+ columns = []
+ for column in table.columns:
+ if isinstance(column.type, NullType):
+ new_column = _get_not_supported_column(col_name_col_instance,
+ column.name)
+ columns.append(new_column)
+ else:
+ columns.append(column.copy())
+
+ shadow_table = Table(db._SHADOW_TABLE_PREFIX + table.name, meta, *columns,
+ mysql_engine='InnoDB')
+ try:
+ shadow_table.create()
+ except Exception:
+ LOG.info(repr(shadow_table))
+ LOG.exception(_('Exception while creating table.'))
+ raise
diff --git a/nova/exception.py b/nova/exception.py
index a9afe37a7..439891153 100644
--- a/nova/exception.py
+++ b/nova/exception.py
@@ -1196,3 +1196,10 @@ class BuildAbortException(NovaException):
class RescheduledException(NovaException):
message = _("Build of instance %(instance_uuid)s was re-scheduled: "
"%(reason)s")
+
+
+class InstanceFaultRollback(NovaException):
+ def __init__(self, inner_exception=None):
+ message = _("Instance rollback performed due to: %s")
+ self.inner_exception = inner_exception
+ super(InstanceFaultRollback, self).__init__(message % inner_exception)
diff --git a/nova/filters.py b/nova/filters.py
index 59028a542..18e3a7d66 100644
--- a/nova/filters.py
+++ b/nova/filters.py
@@ -18,6 +18,9 @@ Filter support
"""
from nova import loadables
+from nova.openstack.common import log as logging
+
+LOG = logging.getLogger(__name__)
class BaseFilter(object):
@@ -48,6 +51,11 @@ class BaseFilterHandler(loadables.BaseLoader):
def get_filtered_objects(self, filter_classes, objs,
filter_properties):
+ list_objs = list(objs)
+ LOG.debug("Starting with %d host(s)", len(list_objs))
for filter_cls in filter_classes:
- objs = filter_cls().filter_all(objs, filter_properties)
- return list(objs)
+ list_objs = list(filter_cls().filter_all(list_objs,
+ filter_properties))
+ LOG.debug("Filter %s returned %d host(s)",
+ filter_cls.__name__, len(list_objs))
+ return list_objs
diff --git a/nova/locale/bs/LC_MESSAGES/nova.po b/nova/locale/bs/LC_MESSAGES/nova.po
index 3996b0b00..3d2bc7e26 100644
--- a/nova/locale/bs/LC_MESSAGES/nova.po
+++ b/nova/locale/bs/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-01-19 20:22+0000\n"
"Last-Translator: yazar <zrncescientiae@gmail.com>\n"
"Language-Team: Bosnian <bs@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1432,21 +1432,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1847,7 +1847,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2021,33 +2021,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2119,62 +2119,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2225,7 +2225,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2726,7 +2726,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2830,29 +2830,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2898,53 +2896,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3249,6 +3251,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3417,581 +3429,581 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4049,34 +4061,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4305,7 +4317,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4558,181 +4570,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4951,16 +4963,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4972,17 +4984,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -4999,34 +5011,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5162,31 +5200,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5194,12 +5232,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5334,20 +5372,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5355,98 +5393,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5516,44 +5554,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5741,17 +5779,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6668,17 +6706,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6713,16 +6751,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6732,22 +6770,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7627,7 +7665,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7720,12 +7758,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7780,62 +7818,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7972,12 +8017,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8035,58 +8080,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8135,7 +8180,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8169,235 +8214,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8405,49 +8450,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8455,50 +8524,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8508,67 +8577,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8601,11 +8670,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8944,103 +9013,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9254,29 +9323,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9793,12 +9862,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9807,24 +9876,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9933,19 +10002,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10221,235 +10290,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10457,51 +10526,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10682,26 +10751,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10771,7 +10844,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10837,65 +10915,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "NeoÄekivana greÅ¡ka prilikom pokretanja komande."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/cs/LC_MESSAGES/nova.po b/nova/locale/cs/LC_MESSAGES/nova.po
index b6153ed69..318b5a055 100644
--- a/nova/locale/cs/LC_MESSAGES/nova.po
+++ b/nova/locale/cs/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-05-17 20:04+0000\n"
"Last-Translator: Zbyněk Schwarz <Unknown>\n"
"Language-Team: Czech <cs@li.org>\n"
@@ -174,7 +174,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "Data páru klíÄů jsou neplatná"
@@ -1478,21 +1478,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Spouštění příkazu (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "Prostředí není podporováno přes SSH"
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr "process_input není podporován přes SSH"
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Výsledek byl %s"
@@ -1904,7 +1904,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Nelze najít adresu %r"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, fuzzy, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr "existuje mnoho pevných ip, použita je první: %s"
@@ -2088,33 +2088,33 @@ msgstr "Neplatný požadavek: %s"
msgid "Failed to get metadata for instance id: %s"
msgstr "Nelze získat metadata pro ip: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Zachycena chyba: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr "%(url)s vrácena s HTTP %(status)d"
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr "Musí být urÄena třída ExtensionManager"
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr "Rozšířený zdroj: %s"
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr "Rozšíření %(ext_name)s: nelze rozšířit %(collection)s: Žádný takový zdroj"
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr "Rozšíření %(ext_name)s: rozšiřování zdroje %(collection)s"
@@ -2187,62 +2187,62 @@ msgstr "Odmítnutí žádosti o snímek, snímky jsou nyní zakázány"
msgid "Instance snapshots are not permitted at this time."
msgstr "Snímky instance nejsou v souÄasnosti povoleny."
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr "NaÄteno rozšíření: %s"
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr "Název roz: %s"
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr "Přezdívká roz: %s"
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr "Popis roz: %s"
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr "Jmenný prostor roz: %s"
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr "Roz aktualizováno: %s"
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr "Výjimka pÅ™i naÄítání rozšíření: %s"
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "NaÄítání rozšíření %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr "Volání továrny rozšíření %s"
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "Nelze naÄít rozšížení %(ext_factory)s: %(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr "Nelze naÄíst rozšíření %(classpath)s: %(exc)s"
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "Nelze naÄíst rozšíření %(ext_name)s: %(exc)s"
@@ -2293,7 +2293,7 @@ msgstr "Žádná taková Äinnost: %s"
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "Poškozené tělo požadavku"
@@ -2813,7 +2813,7 @@ msgstr "vlastnost není podporována: %s"
msgid "Detach interface %s"
msgstr "Spouštění rozhraní VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2925,31 +2925,28 @@ msgstr "Síť nemá Äinnost %s"
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr "%s musí být buÄ 'MANUAL' nebo 'AUTO'."
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-#, fuzzy
-msgid "Instance evacuate is admin only functionality"
-msgstr "Describe-resource je funkce pouze pro správce"
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
#, fuzzy
msgid "host and onSharedStorage must be specified."
msgstr "host a block_migration musí být zadány."
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, fuzzy, python-format
msgid "Error in evacuate, %s"
msgstr "Chyba v přesunu %s"
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Certifikát %(certificate_id)s nenalezen."
@@ -2998,57 +2995,62 @@ msgstr "Žádné další plovoucí ip nejsou dostupné."
msgid "Floating ip %s has been disassociated"
msgstr "Plovoucí ip %(address)s není přidružena."
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr "Chybí parametr dict"
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "Adresa není urÄena"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
#, fuzzy
msgid "No nw_info cache associated with instance"
msgstr "K instanci nejsou přidruženy žádné pevné ip"
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr "K instanci nejsou přidruženy žádné pevné ip"
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+#, fuzzy
+msgid "Specified fixed address not assigned to instance"
+msgstr "K instanci nejsou přidruženy žádné pevné ip"
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
#, fuzzy
msgid "floating ip is already associated"
msgstr "Plovoucí ip %(address)s je přidružena."
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "Nenalezeny žádné plovoucí ip"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
#, fuzzy
msgid "Floating ip is not associated"
msgstr "Plovoucí ip %(address)s není přidružena."
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "Plovoucí ip %(address)s není přidružena."
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3366,6 +3368,16 @@ msgstr "Vytvořit snímek ze svazku %s"
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Uvolnit adresu %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Uvolnit adresu %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3535,385 +3547,385 @@ msgstr "prvek není podřazený"
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
#, fuzzy
msgid "leasing ip"
msgstr "Vytváření obrazu"
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
#, fuzzy
msgid "releasing ip"
msgstr "Vytváření obrazu"
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "obdrženo: %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Chyba DB: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "Reset sítě"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "poÄáteÄní adresa"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
#, fuzzy
msgid "No fixed IP found."
msgstr "Bylo nalezeno nula pevných ip."
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, fuzzy, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr "K instanci nejsou přidruženy žádné pevné ip"
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "Plovoucí ip %(address)s je přidružena."
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr "id"
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr "IPv4"
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr "IPv6"
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "poÄáteÄní adresa"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr "DNS1"
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr "DNS2"
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr "VlanID"
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr "projekt"
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr "uuid"
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Síť nenalezena"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "%(req)s je vyžadováno pro vytvoření sítě."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "zastavit instanci %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Služba %(service_id)s nemohla být nalezena."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Služba %(service_id)s nemohla být nalezena."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "NeoÄekávaná chyba: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
#, fuzzy
msgid "PROJECT"
msgstr "projekt"
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
#, fuzzy
msgid "Must supply valid parameters to create instance_type"
msgstr "Nelze vytvořit typ instance"
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instance - %s není přítomno"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
#, fuzzy
msgid "Unknown error"
msgstr "neznámá chyby připojení hosta"
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, fuzzy, python-format
msgid "%s created"
msgstr "Tabulka |%s| není vytvořena!"
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
#, fuzzy
msgid "Valid instance type name is required"
msgstr "%s je platný název instance"
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Chyba DB: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "typ je = %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr "PÅ™ekroÄena kvóta instancí. Nemůžete spustit další instance tohoto typu."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
"PÅ™ekroÄena kvóta instancí. Můžete spustit pouze %s dalších instancí "
"tohoto typu."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, fuzzy, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr "PÅ™ekroÄena kvóta pro %(pid)s, pokus o spuÅ¡tÄ›ní %(min_count)s instancí"
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
@@ -3922,99 +3934,99 @@ msgstr ""
"PÅ™ekroÄena kvóta pro %(pid)s, pokus o nastavení %(num_metadata)s "
"vlastností metadat"
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
#, fuzzy
msgid "Metadata property key greater than 255 characters"
msgstr "BezpeÄnostní skupina %s by nemÄ›la být vÄ›tší než 255 znaků."
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
#, fuzzy
msgid "Metadata property value greater than 255 characters"
msgstr "BezpeÄnostní skupina %s by nemÄ›la být vÄ›tší než 255 znaků."
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Nelze připojit svazek k instanci %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "Chystá se spuštění %s instancí..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr "bdm %s"
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr "block_device_mapping %s"
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "BUde spuÅ¡tÄ›no ukonÄování insatncí"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "Instance typu %(instance_type_id)s nemohla být nalezena."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "BUde spuÅ¡tÄ›no ukonÄování insatncí"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, fuzzy, python-format
msgid "instance's host %s is down, deleting from database"
msgstr "Žádný hostitel pro instnaci %s, okamžitě smazána"
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Pokus o jemné smazání %s"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Pokus o ukonÄení %s"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Pokus o zastavení %s"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Pokus o spuštění %s"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr "Hledání podle: %s"
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "Spouštění snímku ve VM %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr "flavor_id je None. Předpokládán přesun."
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
@@ -4023,62 +4035,62 @@ msgstr ""
"Stará instance typu %(current_instance_type_name)s, nová instance typu "
"%(new_instance_type_name)s"
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, fuzzy, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr "PÅ™ekroÄena kvóta pro %(pid)s, pokus o spuÅ¡tÄ›ní %(min_count)s instancí"
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Pokus o ukonÄení %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr "Dvojice klíÄů musí být dlouhá 1 až 255 znaků."
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr "BezpeÄnostní skupina %s není Å™etÄ›zec nebo unicode"
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr "BezpeÄnostní skupina %s nemůže být prázdná."
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, fuzzy, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
@@ -4087,65 +4099,65 @@ msgstr ""
"Hodnota (%s) parametru GroupName je neplatná. Délka pÅ™ekraÄuje maximum "
"255 znaků."
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr "BezpeÄnostní skupina %s by nemÄ›la být vÄ›tší než 255 znaků."
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "VytvoÅ™it bezpeÄnostní skupinu %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr "BezpeÄnostní skupina %s již existuje"
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Nelze zniÄit vbd %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Id bezpeÄnostní skupiny by mÄ›lo být celé Äíslo"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Smazat bezpeÄnostní skupinu %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr "Pravidlo (%s) nenalezeno"
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
#, fuzzy
msgid "Quota exceeded, too many security group rules."
msgstr "PÅ™idávání pravidla bezpeÄnostní skupiny: %r"
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Povolit přístup bezpeÄnostní skupiny %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "ZruÅ¡it přístup bezpeÄnostní skupiny %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr "Id bezpeÄnostní skupiny by mÄ›lo být celé Äíslo"
@@ -4204,35 +4216,35 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, fuzzy, python-format
msgid "'%s' argument must be a positive integer"
msgstr "argumenty create musí být kladná celá Äísla"
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
#, fuzzy
msgid "'rxtx_factor' argument must be a positive float"
msgstr "argumenty create musí být kladná celá Äísla"
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr "Chyba DB: %s"
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr "Instance typu %s není nalezena ke smazání"
@@ -4473,7 +4485,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr "%s. Nastavování stavu vm instance na ERROR"
@@ -4750,22 +4762,22 @@ msgstr "Síť %(network_id)s nemohla být nalezena."
msgid "Host %(host)s not found"
msgstr "Hostitel %(host)s nemohl být nalezen."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr "Přesun před spuštěním selhal na %(dest)s"
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
#, fuzzy
msgid "_post_live_migration() is started.."
msgstr "zahájen přesun po spuštění."
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr "PÅ™esun instance do %(dest)s úspěšnÄ› dokonÄen."
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
@@ -4773,21 +4785,21 @@ msgstr ""
"Můžete vidět tuto chybu \"libvirt: QEMU error: Domain not found: no "
"domain with matching name.\" Tuto chybu můžete bezpeÄnÄ› ignorovat."
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
#, fuzzy
msgid "Post operation of migration started"
msgstr "Spuštěna operace po migraci"
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Nelze získat metadata pro ip: %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
@@ -4796,64 +4808,64 @@ msgstr ""
"Nalezeno %(migration_count)d nepotvrzených přesunů starších než "
"%(confirm_window)d vteřin"
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, fuzzy, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr "Vypínání VM pro instanci %(instance_uuid)s"
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "Instance %(instance_id)s nenalezena"
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
#, fuzzy
msgid "In ERROR state"
msgstr "Uzel je v neznámém chybovém stavu."
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr "Aktualizace mezipaměti využití šířky pásma"
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Aktualizace mezipaměti využití šířky pásma"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr "Aktualizace stavu hostitele"
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
@@ -4862,67 +4874,67 @@ msgstr ""
"Nalezeno %(num_db_instances)s v databázi a %(num_vm_instances)s na "
"hypervizoru."
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "Instance není zapnuta"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
#, fuzzy
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr "FLAGS.reclaim_instance_interval <= 0, překskování..."
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr "Znovu získávání smazané instance"
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Zaznamování ovladaÄe svazku: %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, fuzzy, python-format
msgid "No service record for host %s"
msgstr "Žádná služba pro ID výpoÄtu %s"
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, fuzzy, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
@@ -4931,7 +4943,7 @@ msgstr ""
"ZjiÅ¡tÄ›na instance se jmenovkou '%(name_label)s', která je oznaÄena jako "
"SMAZÃNA, ale stále je přítomna na hostiteli."
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, fuzzy, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
@@ -4940,7 +4952,7 @@ msgstr ""
"NiÄení instance se jmenovkou '%(name_label)s', která je oznaÄena jako "
"SMAZÃNA, ale stále je přítomna na hostiteli."
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, fuzzy, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5168,16 +5180,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Nelze restartovat instanci"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr "Nerozpoznaná hodnota read_deleted '%s'"
@@ -5189,17 +5201,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "instance %s: zachráněna"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5216,34 +5228,60 @@ msgstr "verze by mÄ›la být celé Äíslo"
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
#, fuzzy
msgid "volume_usage_cache table not dropped"
@@ -5382,31 +5420,31 @@ msgstr "Pro %s pÅ™ekroÄena kvóta, pokus o pÅ™idÄ›lení adresy"
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Svazek není nalezen v instanci %(instance_id)s."
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "Pevná IP adresa (%(address)s) je již používána."
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Vypínání VM pro instanci %(instance_uuid)s"
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "Pevná IP adresa (%(address)s) je již používána."
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5416,12 +5454,12 @@ msgstr ""
"Nesoulad databáze: Doména DNS |%s| je registrována v Nova db, ale není "
"viditelná plovoucímu ovladaÄi DNS ani instanÄnímu. Bude ignorována."
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr "Doména |%(domain)s| již existuje, změna zóny na |%(av_zone)s|."
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr "Doména |%(domain)s| již existuje, změna projektu na |%(project)s|."
@@ -5558,22 +5596,22 @@ msgstr "%s odlouÄených zastaralých ip"
msgid "setting network host"
msgstr "nastavování hostitele sítě"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
#, fuzzy
msgid "network allocations"
msgstr "přidělování sítě pro instanci %s"
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, fuzzy, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr "sítě získané pro instanci |%(instance_id)s|: |%(networks)s|"
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
#, fuzzy
msgid "network deallocation for instance"
msgstr "oddělení sítě pro instanci |%s|"
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, fuzzy, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5584,79 +5622,79 @@ msgstr ""
" Instance |%(instance)s| je v zóně |%(zone2)s|. Nebude vytvořen žádný "
"záznam DNS."
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, fuzzy, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr "Pro %s pÅ™ekroÄena kvóta, pokus o pÅ™idÄ›lení adresy"
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
#, fuzzy
msgid "Failed to update usages deallocating fixed IP"
msgstr "Nelze aktualizovat svazek v db"
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr "VypůjÄená IP |%(address)s|"
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr "VypůjÄená IP %s není pÅ™idÄ›lena"
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr "VypůjÄena IP |%s|, která není pÅ™idÄ›lena"
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr "Uvolněna IP |%(address)s|"
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr "Uvolněna IP %s, která není přidělena"
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "UvolnÄ›na IP %s, která nebyla vypůjÄena"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, fuzzy, python-format
msgid "%s must be an integer"
msgstr "parametr offset musí být celé Äíslo"
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr "cidr je již používáno"
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
"požadovaný cidr (%(cidr)s) je v konfliktu s existující supersítí "
"(%(super)s)"
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
@@ -5665,22 +5703,22 @@ msgstr ""
"požadovaný cidr (%(cidr)s) je v konfliktu s existujícím menším cidr "
"(%(smaller)s)"
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr "Síť již existuje!"
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr "Síť musí být odlouÄena od projektu %s pÅ™ed smazáním"
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr "Suma mezi poÄtem sítí a spuÅ¡tÄ›ní vlan nemůže být vÄ›tší než 4094"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, fuzzy, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5754,44 +5792,44 @@ msgstr "Hostitel nenalezen"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, fuzzy, python-format
msgid "deallocate_for_instance() for %s"
msgstr "oddělení sítě pro instanci |%s|"
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, fuzzy, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr "Nelze smazat svazek v db"
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, fuzzy, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr "Nelze smazat svazek v db"
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, fuzzy, python-format
msgid "get_instance_nw_info() for %s"
msgstr "Informace o síti instance: |%s|"
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, fuzzy, python-format
msgid "validate_networks() for %s"
msgstr "Špatný formát sítě"
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "Plovoucí ip není nalezena pro id %(id)s."
@@ -5988,17 +6026,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr "Nelze vložit soubor: %(resp)r"
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr "Získány neznámé argumenty klíÄového slova pro utils.execute: %r"
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Spouštění příkazu (podproces): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r selhalo. Opakování."
@@ -6938,18 +6976,18 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
#, fuzzy
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr "PÅ™ekroÄena kvóta pro %(pid)s, pokus o spuÅ¡tÄ›ní %(min_count)s instancí"
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6984,17 +7022,17 @@ msgstr "Po vynuceném ukonÄení instancí: %s"
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
#, fuzzy
msgid "spawn error"
msgstr "neznámá chyby připojení hosta"
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr "Adresa |%(address)s| není přidělena"
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -7004,22 +7042,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr "Adresa |%(address)s| není přidělena"
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7915,7 +7953,7 @@ msgstr "Verze agenta instance: %s"
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr "Aktualizace statistik hostitele"
@@ -8016,12 +8054,12 @@ msgstr "Střídání není povoleno pro snímky"
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "Položka nenalezena"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, fuzzy, python-format
msgid "Duplicate VM name found: %s"
msgstr "Kvantový objekt nenalezen: %s"
@@ -8076,65 +8114,72 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
#, fuzzy
msgid "migrate_disk_and_power_off called"
msgstr "Instance %s: Spouštění přesunu disku a vypnutí"
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
#, fuzzy
msgid "finish_revert_migration called"
msgstr "Instance %s: SpuÅ¡tÄ›ní dokoÄení vrácení pÅ™esunu"
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Plovoucí ip není nalezena pro id %(id)s."
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
#, fuzzy
msgid "finish_migration called"
msgstr "Instance %s: SpouÅ¡tÄ›ní dokonÄení pÅ™esunu"
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, fuzzy, python-format
msgid "Cannot find boot VHD file: %s"
msgstr "Neznámý základní soubor: %s"
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8274,12 +8319,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Přidělení plovoucí IP pro |%s|"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "Vkládání cesty souboru: '%s'"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "Vkládání cesty souboru: '%s'"
@@ -8344,59 +8389,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Nelze získat metadata pro ip: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Mazání svazku s ID: %s "
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "Plovoucí ip není nalezena pro id %(id)s."
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "Server nenalezen"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8445,7 +8490,7 @@ msgstr "Připojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)
msgid "Detaching physical disk from instance: %s"
msgstr "Vytváření snímku instance VM %s "
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr "Nelze zjistit název zavadÄ›Äe iscsi"
@@ -8479,247 +8524,247 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr "Neůze najít vbd pro vdi %s"
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Připojování k libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "skupina svazku %s neexistuje"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Připojení k libvirt poškozeno"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Připojování k libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr "Chyba od libvirt bÄ›hem niÄení. Kód=%(errcode)s Chyba=%(e)s"
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
#, fuzzy
msgid "During wait destroy, instance disappeared."
msgstr "Při spuštění wait zmizelo %s."
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr "Instance úspěšnÄ› zniÄena."
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Instance budou zastaveny"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr "Chyba od libvirt bÄ›hem ruÅ¡ení urÄení. Kód=%(errcode)s Chyba=%(e)s"
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, fuzzy, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr "Chyba od libvirt bÄ›hem ruÅ¡ení urÄení. Kód=%(errcode)s Chyba=%(e)s"
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr "Mazání souborů instance %(target)s"
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, fuzzy, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr "Nelze naplánovat_%(method)s: %(ex)s"
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
#, fuzzy
msgid "Could not determine fibre channel world wide node names"
msgstr "Nelze zjistit název zavadÄ›Äe iscsi"
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
#, fuzzy
msgid "Could not determine fibre channel world wide port names"
msgstr "Nelze zjistit název zavadÄ›Äe iscsi"
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
#, fuzzy
msgid "During detach_volume, instance disappeared."
msgstr "Při spuštění wait zmizelo %s."
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Źádné sítÄ› nejsou urÄeny."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
#, fuzzy
msgid "During detach_interface, instance disappeared."
msgstr "Při spuštění wait zmizelo %s."
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Źádné sítÄ› nejsou urÄeny."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "Instance úspěšně restartována."
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Nelze restartovat instanci"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
#, fuzzy
msgid "Instance shutdown successfully."
msgstr "Instance úspěšně vytvořena."
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr "Instance úspěšně restartována."
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr "Instance je spuštěna"
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr "Instance úspěšně vytvořena."
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "data: %(data)r, fpath: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "Uživatel nemá správcovská oprávnění"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr "Vytváření obrazu"
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Vkládání %(injection)s do obrazu %(img_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr "Ignorování chyby při vkládání dat do obrazu %(img_id)s (%(e)s)"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8727,12 +8772,12 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
@@ -8741,7 +8786,27 @@ msgstr ""
"Chyba od libvirt při hledání %(instance_name)s: [Kód chyby "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
#, fuzzy
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
@@ -8750,31 +8815,35 @@ msgstr ""
"Nelze získat poÄet cpu, protože tato funkce není na této platformÄ› "
"zavedena. Tuto chybu lze prozatím bezpeÄnÄ› ignorovat."
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr "verze libvirt je příliš stará (nepodporuje getVersion)"
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Získávání velikosto brazu %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8782,21 +8851,21 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, fuzzy, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
@@ -8805,16 +8874,16 @@ msgstr ""
"Vytváření doÄasného souboru %s pro informování ostatních poÄítaÄových "
"uzlů, že by se měli připojit ke stejnému úložišti."
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr "Přesunutí bloku nemůže být použito ve sdíleném úložišti."
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
#, fuzzy
msgid "Live migration can not be used without shared storage."
msgstr "Přesunutí bloku nemůže být použito ve sdíleném úložišti."
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, fuzzy, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
@@ -8823,7 +8892,7 @@ msgstr ""
"Nelze přesunout %(instance_id)s do %(dest)s: Nedostatek disku "
"(hostitel:%(available)s <= instance:%(necessary)s)"
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
@@ -8832,7 +8901,7 @@ msgstr ""
"Spuštěná instance má info o CPU:\n"
"%s"
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8847,7 +8916,7 @@ msgstr ""
"\n"
"Prohlédněte si %(u)s"
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
@@ -8856,24 +8925,24 @@ msgstr ""
"Vytváření doÄasného souboru %s pro informování ostatních poÄítaÄových "
"uzlů, že by se měli připojit ke stejnému úložišti."
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Přesun před spuštěním selhal na %(dest)s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, fuzzy, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
"plug_vifs() selhalo %(cnt)d.opakování až na %(max_retry)d pro "
"%(hostname)s."
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, fuzzy, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
@@ -8882,42 +8951,42 @@ msgstr ""
"Chyba od libvirt při hledání %(instance_name)s: [Kód chyby "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr "přeskakování %(path)s protože vypadá jako svazek"
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
#, fuzzy
msgid "Starting migrate_disk_and_power_off"
msgstr "Instance %s: Spouštění přesunu disku a vypnutí"
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
#, fuzzy
msgid "Instance running successfully."
msgstr "Instance %s úspěšně běží."
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
#, fuzzy
msgid "Starting finish_migration"
msgstr "Instance %s: SpouÅ¡tÄ›ní dokonÄení pÅ™esunu"
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
#, fuzzy
msgid "Starting finish_revert_migration"
msgstr "Instance %s: SpuÅ¡tÄ›ní dokoÄení vrácení pÅ™esunu"
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, fuzzy, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr "Mazání souborů instance %(target)s"
@@ -8952,11 +9021,11 @@ msgstr "Nwfilter (%(instance_filter_name)s) pro %(name)s nenalezen."
msgid "iptables firewall: Setup Basic Filtering"
msgstr "iptables firewall: Nastavení základního filtrování"
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, fuzzy, python-format
msgid "Unknown image_type=%s"
msgstr "neznámá obslužná rutina obrazu disku: %s"
@@ -9311,106 +9380,106 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Nelze nalézt svazek %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, fuzzy, python-format
msgid "Fetching image '%s' from glance"
msgstr "Stahování obrazu %s ze serveru obrazu glance"
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Odstraňování základního souboru: %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, fuzzy, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr "Nahrávání obrazu %s"
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "vytváření sr bez nástrojů svazku"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, fuzzy, python-format
msgid "Copying image to the device '%s'"
msgstr "Získávání velikosto brazu %s"
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Filtry přidány do instance %s"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Nelze použít globální roli %(role_id)s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
#, fuzzy
msgid "Connection error connecting PowerVM manager"
msgstr "Chyba připojení během kontaktování serveru glance, další pokus"
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Spouštění příkazu (podproces): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "Připojení k melange selhalo"
@@ -9629,29 +9698,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr "Vlastnost %(attr)s nenastavena pro spravovaný objekt %(objName)s"
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr "Není registrováno žádné VM"
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr "Virtuální stroj s ref %s neexistuje"
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr "Odhlašování sezení, které je neplatné, nebo už odhlášené: %s"
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr "Sezení je chybné"
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr "Sezení je neplatné"
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
#, fuzzy
msgid "No Virtual Machine has been registered yet"
msgstr " Žádné virtuální stroje nebyly zatím registrovány"
@@ -10232,12 +10301,12 @@ msgstr "Připojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)
msgid "Unable to find iSCSI Target"
msgstr "Nelze najít adresu %r"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Bod připojení %(mountpoint)s připojen k instanci %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Odpojení svazku: %(instance_name)s, %(mountpoint)s"
@@ -10247,19 +10316,19 @@ msgstr "Odpojení svazku: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Nelze najít svazek v db"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Bod připojení %(mountpoint)s odpojen od instance %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, fuzzy, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
"ÄŒASOVà LIMIT: VyprÅ¡el Äas volání %(method)s. VM id=%(instance_uuid)s; "
"arg=%(args)r"
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, fuzzy, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
@@ -10268,7 +10337,7 @@ msgstr ""
"NEZAVEDENO: Volání %(method)s není agentem podporováno. VM "
"id=%(instance_uuid)s; arg=%(args)r"
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, fuzzy, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr "Volání %(method)s vrátilo chybu: %(e)s."
@@ -10386,19 +10455,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "Nelze deÅ¡ifrovat soukromý klíÄ: %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr "Spuštění hostitele na XenServer není podporováno."
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr "Nelze se přihlásit do XenAPI (je disk Dom0 plný?)"
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "Obdržena výjimka: %s"
@@ -10685,17 +10754,17 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Žádání xapi o získání obrazu vhd %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
@@ -10704,17 +10773,17 @@ msgstr ""
"Velkost %(size_bytes) obrazu pÅ™ekraÄuje povolenou velikost "
"%(allowed_size_bytes)d typu instance"
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "Získávání obrazu %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Velikost obrazu %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
@@ -10723,64 +10792,64 @@ msgstr ""
"Obraz Kernel/Ramdisk je příliš velký: %(vdi_size)d bajtů, max "
"%(max_size)d bajtů"
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Kopírování VDI %s do /boot/guest na dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s zniÄeno"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "instance %s: nelze získat obraz glance"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr "Zjištěn formát %(image_type_str)s obrazu %(image_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Hledání vdi %s pro kernel PV"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr "Neznámý formát obrazu %(disk_image_type)s"
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s je stále dostupné"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Znovu skenování SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr "Příznak sr_matching_filter '%s' se neřídí pravidly formátování"
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
@@ -10789,50 +10858,50 @@ msgstr ""
"XenAPI nelze najít úložiště na které nainstalovat instance hostů. Prosím "
"zkontrolujte Vaše nastavení a/nebo nastavte příznak 'sr_matching_filter'"
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr "Nelze najít SR typu obsahu ISO"
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr "ISO: hledání SR %(sr_rec)s"
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr "ISO: není obsah iso"
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr "ISO: typ obsahu iso, není klÃ­Ä 'i18n-key'"
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr "ISO: typ obsahu iso, hodnota i18n-key není 'local-storage-iso'"
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr "ISO: SR odpovídající naším kritériím"
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr "ISO: ISO, prozkoumáváno, zdali se jedná o místního hostitele"
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr "ISO: PBD %(pbd_ref)s zmizelo"
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr "ISO: shoda PBD, požadováno %(pbd_rec)s, získáno %(host)s"
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr "ISO: SR s místním PBD"
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
@@ -10841,22 +10910,22 @@ msgstr ""
"Nelze získat RRD XML pro VM %(vm_uuid)s mající podrobnosti serveru: "
"%(server)s."
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr "Nelze získat aktualizace RRD XML s podrobnostmi serveru: %(server)s."
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr "Neznámá data statistik od Xenserver: %s"
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s má nadřazenho %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
@@ -10865,66 +10934,66 @@ msgstr ""
"Nadřazený %(parent_uuid)s se neshoduje s původním nadřazeným "
"%(original_parent_uuid)s, Äekání na splynutí..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr "PÅ™ekroÄeny pokusy o splynutí VHD (%(max_attempts)d), pÅ™eruÅ¡eno..."
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr "VyprÅ¡el Äasový limit pÅ™i Äekání na vytvoÅ™ení zařízení %s"
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Zapojování VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "Zapojování VBD %s hotovo."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr "VBD %(vbd_ref)s zapojeno jako %(orig_dev)s"
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr "VBD %(vbd_ref)s zapojeno do špatného dev, znovu mapování do %(dev)s"
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "NiÄení VBD pro VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "NiÄení VBD pro VDI %s hotovo."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Spouštění pygrub s %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Nalezen kernel Xen %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "Žádný kernel Xen nenalezen. Zavádění HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10932,16 +11001,16 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr "Oddíly:"
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr " %(num)s: %(ptype)s %(size)d sektorů"
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
@@ -10950,35 +11019,35 @@ msgstr ""
"Zapisování tabulky oddílů %(primary_first)d %(primary_last)d do "
"%(dev_path)s..."
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "Zapisování tabulky oddílů %s dokonÄeno."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr "Přímé zacházení se soubory rozhraní"
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr "Nelze pÅ™ipojit souborový systém (oÄekáváno v nelinuxových instancích): %s"
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -11178,27 +11247,31 @@ msgstr "vytváření VIF pro VM %(vm_ref)s, síť %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr "Vkládání názvu hostitele do xs pro vm: |%s|"
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "Špatný formát sítě"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
#, fuzzy
msgid "Migrate Send failed"
msgstr "Vytvoření selhalo"
@@ -11271,7 +11344,12 @@ msgstr "Nelze získat informace o cíli %(data)s, %(mountpoint)s"
msgid "Unable to obtain target information %(connection_data)s"
msgstr "Nelze získat informace o cíli %(data)s, %(mountpoint)s"
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Připojeni svazku: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "Instance %(instance_id)s nemohla být nastavena."
@@ -11339,70 +11417,3 @@ msgstr "stav musí být dostupný"
msgid "status must be 'available'"
msgstr "stav musí být dostupný"
-#~ msgid "Unexpected error while running command."
-#~ msgstr "PÅ™i spuÅ¡tÄ›ní příkazu doÅ¡lo k neÄekané chybÄ›."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Příkaz: %(cmd)s\n"
-#~ "Kód ukonÄení: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "Chyba při spouštění xvp: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Nelze při odpojení vif instance '%s'"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Nelze při odpojení vif instance '%s'"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Nelze při odpojení vif instance '%s'"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Nelze při odpojení vif instance '%s'"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr "Nelze při odpojení vif instance '%s'"
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Síť %(network_id)s nemohla být nalezena."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr "Je třeba zadat vmwareapi_wsdl_loc"
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr "Nelze získat SR pro tohoto hostitele: %s"
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/da/LC_MESSAGES/nova.po b/nova/locale/da/LC_MESSAGES/nova.po
index cc0e7f1c8..6d520985e 100644
--- a/nova/locale/da/LC_MESSAGES/nova.po
+++ b/nova/locale/da/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-01-15 21:46+0000\n"
"Last-Translator: Soren Hansen <soren@linux2go.dk>\n"
"Language-Team: Danish <da@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1432,21 +1432,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1847,7 +1847,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2021,33 +2021,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2119,62 +2119,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2225,7 +2225,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2726,7 +2726,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2830,29 +2830,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2898,53 +2896,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3249,6 +3251,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3417,581 +3429,581 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4049,34 +4061,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4305,7 +4317,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4558,181 +4570,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4951,16 +4963,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4972,17 +4984,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -4999,34 +5011,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5162,31 +5200,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5194,12 +5232,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5334,20 +5372,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5355,98 +5393,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5516,44 +5554,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5741,17 +5779,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6668,17 +6706,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6713,16 +6751,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6732,22 +6770,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7627,7 +7665,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7720,12 +7758,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7780,62 +7818,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7972,12 +8017,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8035,58 +8080,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8135,7 +8180,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8169,236 +8214,236 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "bind %s: slettet"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8406,49 +8451,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8456,50 +8525,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8509,67 +8578,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8602,11 +8671,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8945,103 +9014,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9255,29 +9324,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9794,12 +9863,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9808,24 +9877,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9934,19 +10003,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10222,235 +10291,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10458,51 +10527,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10683,26 +10752,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10772,7 +10845,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10838,65 +10916,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr ""
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/de/LC_MESSAGES/nova.po b/nova/locale/de/LC_MESSAGES/nova.po
index 02882f5fa..7ed7e62f6 100644
--- a/nova/locale/de/LC_MESSAGES/nova.po
+++ b/nova/locale/de/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-08-23 11:23+0000\n"
"Last-Translator: Thierry Carrez <thierry.carrez+lp@gmail.com>\n"
"Language-Team: German <de@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1434,21 +1434,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Ergebnis war %s"
@@ -1849,7 +1849,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2024,33 +2024,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufügen"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2122,62 +2122,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2228,7 +2228,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2730,7 +2730,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2835,29 +2835,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Instanz %s pausiert"
@@ -2904,53 +2902,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3255,6 +3257,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3423,583 +3435,583 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "Instanz %s: Rettung"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufügen"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Nicht möglich volume %s zufinden"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4057,34 +4069,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4315,7 +4327,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4572,182 +4584,182 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr "Instanz %s pausiert"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "Instanz %s: Rettung"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4966,16 +4978,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4987,17 +4999,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5014,34 +5026,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5177,31 +5215,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5209,12 +5247,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5349,20 +5387,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5370,98 +5408,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5532,44 +5570,44 @@ msgstr "Instanz %s pausiert"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5757,17 +5795,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Führe Kommando (subprocess) aus: %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6684,17 +6722,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6729,16 +6767,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6748,22 +6786,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7648,7 +7686,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7741,12 +7779,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7801,62 +7839,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufügen"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7993,12 +8038,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufügen"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8057,59 +8102,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "Instanz %s pausiert"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8158,7 +8203,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr "Nicht möglich Volumen zur Instanze %s hinzuzufügen"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8192,236 +8237,236 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "Volume %s: erfolgreich erstellt"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8429,49 +8474,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8479,50 +8548,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8532,67 +8601,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8625,11 +8694,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8968,103 +9037,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Nicht möglich volume %s zufinden"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Nicht möglich volume %s zufinden"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Führe Kommando (subprocess) aus: %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9278,29 +9347,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9819,12 +9888,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Nicht möglich volume %s zufinden"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Einhängepunkt%(mountpoint)s zur Instanze %(instance_name)s hinzugefügt"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9834,24 +9903,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr "Nicht möglich volume %s zufinden"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9960,19 +10029,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10248,235 +10317,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "keine Methode für diese Nachricht gefunden: %s"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10484,51 +10553,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10709,26 +10778,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10799,7 +10872,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10865,70 +10943,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Unerwarteter Fehler bei Ausführung des Kommandos."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Befehl: %(cmd)s\n"
-#~ "Exit-Code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/en_AU/LC_MESSAGES/nova.po b/nova/locale/en_AU/LC_MESSAGES/nova.po
index a4f7c8f3f..0f2c086f5 100644
--- a/nova/locale/en_AU/LC_MESSAGES/nova.po
+++ b/nova/locale/en_AU/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-10-21 11:27+0000\n"
"Last-Translator: Tom Fifield <Unknown>\n"
"Language-Team: English (Australia) <en_AU@li.org>\n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1439,21 +1439,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Running cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Result was %s"
@@ -1859,7 +1859,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Disassociate address %s"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2035,33 +2035,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Caught error: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2133,62 +2133,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2239,7 +2239,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2747,7 +2747,7 @@ msgstr "attribute not supported: %s"
msgid "Detach interface %s"
msgstr "Starting VLAN interface %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2854,29 +2854,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "setting network host"
@@ -2923,54 +2921,58 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "group %s already exists"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "setting network host"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "Associate address %(public_ip)s to instance %(instance_id)s"
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3282,6 +3284,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Release address %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Release address %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3451,598 +3463,598 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "received %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Caught error: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "setting network host"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "start address"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "group %s already exists"
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "start address"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "setting network host"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Reboot instance %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "Unexpected error raised: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instance %s: rescued"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Caught error: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "Caught error: %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr "Instance quota exceeded. You can only run %s more instances of this type."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr "Instance quota exceeded. You can only run %s more instances of this type."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Unable to attach volume to instance %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "Going to run %s instances..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Going to start terminating instances"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "instance %s: booted"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Going to start terminating instances"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Going to try to terminate %s"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Going to try to terminate %s"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Going to try to terminate %s"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Going to try to terminate %s"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "Starting snapshot for VM %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Going to try to terminate %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Create Security Group %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Unable to destroy VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Revoke security group ingress %s"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Delete security group %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Authorise security group ingress %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Revoke security group ingress %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4101,34 +4113,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4361,7 +4373,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4628,183 +4640,183 @@ msgstr "instance %s: booted"
msgid "Host %(host)s not found"
msgstr "instance %s: booted"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Deleting user %s"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "instance %s: booted"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Deleting user %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5024,16 +5036,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5045,17 +5057,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "instance %s: rescued"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5072,34 +5084,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5236,31 +5274,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Going to start terminating instances"
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "Associate address %(public_ip)s to instance %(instance_id)s"
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "Associate address %(public_ip)s to instance %(instance_id)s"
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5268,12 +5306,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5408,20 +5446,20 @@ msgstr ""
msgid "setting network host"
msgstr "setting network host"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5429,92 +5467,92 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "IP %s released that was not leased"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
@@ -5522,7 +5560,7 @@ msgstr ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5594,44 +5632,44 @@ msgstr "instance %s: booted"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "setting network host"
@@ -5822,17 +5860,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6755,17 +6793,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6800,16 +6838,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6819,22 +6857,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7725,7 +7763,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7819,12 +7857,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7879,62 +7917,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "setting network host"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8074,12 +8119,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Going to start terminating instances"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "Injecting file path: '%s'"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "Injecting file path: '%s'"
@@ -8144,59 +8189,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Deleting user %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "setting network host"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "instance %s: booted"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8245,7 +8290,7 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Creating a raw instance"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8279,239 +8324,239 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Connecting to libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "volume group %s doesn't exist"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Connection to libvirt broke"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Connecting to libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Going to try to terminate %s"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "instance %s: rebooted"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "data: %(data)r, fpath: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Asking xapi to upload %(vdi_uuids)s as ID %(image_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
"instance %(inst_name)s: ignoring error injecting data into image "
"%(img_id)s (%(e)s)"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8519,49 +8564,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8569,50 +8638,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8622,67 +8691,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Authentication Failure: %s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8715,11 +8784,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9058,104 +9127,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Unable to locate volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Starting Bridge interface for %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Unable to locate volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Unable to detach volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9369,29 +9438,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9916,12 +9985,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Unable to locate volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -9931,24 +10000,24 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Unable to detach volume %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10061,19 +10130,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "Failed to decrypt private key: %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "Got exception: %s"
@@ -10354,169 +10423,169 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Asking xapi to upload %(vdi_uuids)s as ID %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "Registered image %(image_location)s with id %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Size for image %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copying VDI %s to /boot/guest on dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s destroyed"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Looking up vdi %s for PV kernel"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s is still available"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-scanning SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s has parent %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
@@ -10525,66 +10594,66 @@ msgstr ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Plugging VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "Plugging VBD %s done."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Destroying VBD for VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "Destroying VBD for VDI %s done."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Running pygrub against %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Found Xen kernel %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "No Xen kernel found. Booting HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10592,51 +10661,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "Writing partition table %s done."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10823,26 +10892,30 @@ msgstr "Creating VIF for VM %(vm_ref)s, network %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10913,7 +10986,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10979,70 +11057,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Unexpected error while running command."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "Error starting xvp: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Failed to decrypt private key: %s"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Failed to decrypt private key: %s"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Starting Bridge interface for %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Starting Bridge interface for %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/en_GB/LC_MESSAGES/nova.po b/nova/locale/en_GB/LC_MESSAGES/nova.po
index c21d8b165..d77db9924 100644
--- a/nova/locale/en_GB/LC_MESSAGES/nova.po
+++ b/nova/locale/en_GB/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-03-30 11:10+0000\n"
"Last-Translator: Anthony Harrington <untaintableangel@hotmail.co.uk>\n"
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "Keypair data is invalid"
@@ -1439,21 +1439,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Running cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Result was %s"
@@ -1854,7 +1854,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2031,33 +2031,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Invalid instance type %(instance_type)s."
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2129,62 +2129,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2235,7 +2235,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2738,7 +2738,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr "Starting VLAN interface %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2845,29 +2845,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "instance %s: suspending"
@@ -2914,53 +2912,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3267,6 +3269,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3436,586 +3448,586 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "instance %s: reset network"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Rebooting instance %s"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instance %s: resuming"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Unable to attach volume to instance %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Virtual Interface creation failed"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "Instance %(instance_id)s is not running."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Unable to destroy VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4074,34 +4086,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4333,7 +4345,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4595,183 +4607,183 @@ msgstr "instance %s: snapshotting"
msgid "Host %(host)s not found"
msgstr "Instance %(instance_id)s is not running."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "Instance %(instance_id)s is not running."
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Re-exporting %s volumes"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "instance %s: snapshotting"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Re-exporting %s volumes"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4991,16 +5003,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5012,17 +5024,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5039,34 +5051,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5202,31 +5240,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Instance %(instance_id)s is not running."
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Instance %(instance_id)s is not running."
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5234,12 +5272,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5374,20 +5412,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5395,98 +5433,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5558,44 +5596,44 @@ msgstr "instance %s: suspending"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5783,17 +5821,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6716,17 +6754,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6761,16 +6799,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6780,22 +6818,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7682,7 +7720,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7776,12 +7814,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7836,62 +7874,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Get console output for instance %s"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8031,12 +8076,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Get console output for instance %s"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8101,59 +8146,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Re-exporting %s volumes"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "instance %s: suspending"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8202,7 +8247,7 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Get console output for instance %s"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8236,237 +8281,237 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Connection to melange failed"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "volume %s: created successfully"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "User does not have admin privileges"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Asking xapi to upload %(vdi_uuids)s as ID %(image_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8474,49 +8519,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Unable to detach volume %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8524,50 +8593,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8577,67 +8646,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8670,11 +8739,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9013,104 +9082,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Unable to locate volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Starting Bridge interface for %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Unable to locate volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Unable to detach volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "Connection to melange failed"
@@ -9326,29 +9395,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9868,12 +9937,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Unable to locate volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -9883,24 +9952,24 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Unable to detach volume %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10009,19 +10078,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10301,169 +10370,169 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Asking xapi to upload %(vdi_uuids)s as ID %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Size for image %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copying VDI %s to /boot/guest on dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s destroyed"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Looking up vdi %s for PV kernel"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s is still available"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-scanning SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s has parent %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
@@ -10472,66 +10541,66 @@ msgstr ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Plugging VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "Plugging VBD %s done."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Destroying VBD for VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "Destroying VBD for VDI %s done."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Running pygrub against %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Found Xen kernel %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "No Xen kernel found. Booting HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10539,51 +10608,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "Writing partition table %s done."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10765,26 +10834,30 @@ msgstr "Creating VIF for VM %(vm_ref)s, network %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10855,7 +10928,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "Instance %(instance_id)s is not running."
@@ -10921,70 +10999,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Unexpected error while running command."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Starting Bridge interface for %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Starting Bridge interface for %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/en_US/LC_MESSAGES/nova.po b/nova/locale/en_US/LC_MESSAGES/nova.po
index 123f1c850..3bdeafc46 100644
--- a/nova/locale/en_US/LC_MESSAGES/nova.po
+++ b/nova/locale/en_US/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Nova\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2013-01-21 18:28+0000\n"
"Last-Translator: Jeremy Stanley <fungi@yuggoth.org>\n"
"Language-Team: en_US <LL@li.org>\n"
@@ -171,7 +171,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "Keypair data is invalid"
@@ -1488,21 +1488,21 @@ msgstr ""
"unexpected task state: expecting %(expected)s but the actual state is "
"%(actual)s"
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Running cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "Environment not supported over SSH"
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr "process_input not supported over SSH"
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Result was %s"
@@ -1906,7 +1906,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Unable to associate IP Address, no fixed_ips."
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr "multiple fixed_ips exist, using the first: %s"
@@ -2087,26 +2087,26 @@ msgstr "Invalid request: %s"
msgid "Failed to get metadata for instance id: %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Caught error: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr "%(url)s returned with HTTP %(status)d"
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr "Must specify an ExtensionManager class"
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr "Extended resource: %s"
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
@@ -2115,7 +2115,7 @@ msgstr ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr "Extension %(ext_name)s extending resource: %(collection)s"
@@ -2189,62 +2189,62 @@ msgstr "Rejecting snapshot request, snapshots currently disabled"
msgid "Instance snapshots are not permitted at this time."
msgstr "Instance snapshots are not permitted at this time."
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr "Loaded extension: %s"
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr "Ext name: %s"
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr "Ext alias: %s"
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr "Ext description: %s"
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr "Ext namespace: %s"
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr "Ext updated: %s"
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr "Exception loading extension: %s"
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "Loading extension %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr "Calling extension factory %s"
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "Failed to load extension %(ext_factory)s: %(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr "Failed to load extension %(classpath)s: %(exc)s"
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "Failed to load extension %(ext_name)s: %(exc)s"
@@ -2295,7 +2295,7 @@ msgstr "There is no such action: %s"
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "Malformed request body"
@@ -2806,7 +2806,7 @@ msgstr "attribute not supported: %s"
msgid "Detach interface %s"
msgstr "Starting VLAN interface %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2917,31 +2917,28 @@ msgstr "Network does not have %s action"
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr "%s must be either 'MANUAL' or 'AUTO'."
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-#, fuzzy
-msgid "Instance evacuate is admin only functionality"
-msgstr "Describe-resource is admin only functionality"
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
#, fuzzy
msgid "host and onSharedStorage must be specified."
msgstr "host and block_migration must be specified."
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, fuzzy, python-format
msgid "Error in evacuate, %s"
msgstr "Error in migrate %s"
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Fixed ip %(fixed_ip_id)s not found"
@@ -2988,53 +2985,58 @@ msgstr "No more floating ips available."
msgid "Floating ip %s has been disassociated"
msgstr "Floating ip is not associated"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr "Missing parameter dict"
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "Address not specified"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr "No nw_info cache associated with instance"
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr "No fixed ips associated to instance"
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+#, fuzzy
+msgid "Specified fixed address not assigned to instance"
+msgstr "No fixed ips associated to instance"
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr "floating ip is already associated"
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr "l3driver call to add floating ip failed"
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr "floating ip not found"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr "Error. Unable to associate floating ip"
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr "Floating ip is not associated"
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "Floating ip %(address)s is not associated."
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3352,6 +3354,16 @@ msgstr "Create snapshot from volume %s"
msgid "Invalid value '%s' for force."
msgstr "Invalid value '%s' for force. "
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Release address %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Release address %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr "Instance has had its instance_type removed from the DB"
@@ -3520,375 +3532,375 @@ msgstr "element is not a child"
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
#, fuzzy
msgid "leasing ip"
msgstr "Creating vifs"
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
#, fuzzy
msgid "releasing ip"
msgstr "Creating vifs"
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "received %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "DB error: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "Reset network"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "start address"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
#, fuzzy
msgid "No fixed IP found."
msgstr "Zero fixed ips could be found."
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, fuzzy, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr "No fixed ips associated to instance"
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "Floating ip %(address)s already exists."
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr "id"
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr "IPv4"
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr "IPv6"
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "start address"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr "DNS1"
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr "DNS2"
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr "VlanID"
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr "project"
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr "uuid"
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Network not found"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "%(req)s is required to create a network."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "stop instance"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Service %(service_id)s could not be found."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Service %(service_id)s could not be found."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "Unexpected error: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
#, fuzzy
msgid "PROJECT"
msgstr "project"
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
#, fuzzy
msgid "Must supply valid parameters to create instance_type"
msgstr "Unable to create instance type"
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instance not present"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
#, fuzzy
msgid "Unknown error"
msgstr "unknown guestmount error"
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, fuzzy, python-format
msgid "%s created"
msgstr "Table |%s| not created!"
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
#, fuzzy
msgid "Valid instance type name is required"
msgstr "%s is a valid instance name"
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "DB error: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, fuzzy, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr "%(key)s with value %(value)s failed validator %(name)s"
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "hyperv vm state: %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr "Cannot run any more instances of this type."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr "Can only run %s more instances of this type."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
@@ -3897,7 +3909,7 @@ msgstr ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
@@ -3906,93 +3918,93 @@ msgstr ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr "Metadata property key blank"
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr "Metadata property key greater than 255 characters"
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr "Metadata property value greater than 255 characters"
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Unable to attach boot volume to instance %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "Going to run %s instances..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr "bdm %s"
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr "block_device_mapping %s"
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Going to start terminating instances"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "Instance type %(instance_type_id)s could not be found."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Going to start terminating instances"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, fuzzy, python-format
msgid "instance's host %s is down, deleting from database"
msgstr "host for instance is down, deleting from database"
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr "Going to try to soft delete instance"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr "Going to try to terminate instance"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr "Going to try to stop instance"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr "Going to try to start instance"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr "Searching by: %s"
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr "snapshot for %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr "flavor_id is None. Assuming migration."
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
@@ -4001,62 +4013,62 @@ msgstr ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, fuzzy, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr "%(overs)s quota exceeded for %(pid)s, tried to resize instance. %(msg)s"
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr "Locking"
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr "Unlocking"
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr "Volume must be attached in order to detach."
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Going to try to live migrate instance to %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr "Keypair name contains unsafe characters"
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr "Keypair name must be between 1 and 255 characters long"
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr "Security group %s is not a string or unicode"
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr "Security group %s cannot be empty."
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
@@ -4065,63 +4077,63 @@ msgstr ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr "Security group %s should not be greater than 255 characters."
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr "Quota exceeded, too many security groups."
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Create Security Group %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr "Security group %s already exists"
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Unable to destroy vbd %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr "Security group is still in use"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr "Failed to update usages deallocating security group"
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Delete security group %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr "Rule (%s) not found"
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr "Quota exceeded, too many security group rules."
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Authorize security group ingress %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Revoke security group ingress %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr "Security group id should be integer"
@@ -4184,35 +4196,35 @@ msgstr ""
"Unable to claim resources. Free CPU %(free_vcpus)d < requested CPU "
"%(vcpus)d"
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr "names can only contain [a-zA-Z0-9_.- ]"
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, fuzzy, python-format
msgid "'%s' argument must be a positive integer"
msgstr "create arguments must be positive integers"
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
#, fuzzy
msgid "'rxtx_factor' argument must be a positive float"
msgstr "create arguments must be positive integers"
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, fuzzy, python-format
msgid "'%s' argument must be greater than 0"
msgstr "Volume size '%s' must be an integer and greater than 0"
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr "DB error: %s"
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr "Instance type %s not found for deletion"
@@ -4449,7 +4461,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr "Ignoring volume cleanup failure due to %s"
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr "%s. Setting instance vm_state to ERROR"
@@ -4715,21 +4727,21 @@ msgstr "Port %(port_id)s is still in use."
msgid "Host %(host)s not found"
msgstr "Host %(host)s could not be found."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr "Pre live migration failed at %(dest)s"
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr "_post_live_migration() is started.."
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr "Migrating instance to %(dest)s finished successfully."
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
@@ -4737,20 +4749,20 @@ msgstr ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr "Post operation of migration started"
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Failed to get info for disk %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr "Updated the info_cache for instance"
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
@@ -4759,12 +4771,12 @@ msgstr ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr "Setting migration %(migration_id)s to error: %(reason)s"
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
@@ -4773,26 +4785,26 @@ msgstr ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "Instance %(instance_uuid)s not found"
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr "In ERROR state"
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, fuzzy, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr "In states %(vm_state)s/%(task_state)s, notRESIZED/None"
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr "Error auto-confirming resize: %(e)s. Will retry later."
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
@@ -4801,25 +4813,25 @@ msgstr ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr "Failed to generate usage audit for instance on host %s"
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr "Updating bandwidth usage cache"
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Updating bandwidth usage cache"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr "Updating host status"
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
@@ -4828,11 +4840,11 @@ msgstr ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr "During sync_power_state the instance has a pending task. Skip."
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
@@ -4841,57 +4853,57 @@ msgstr ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr "Instance shutdown by itself. Calling the stop API."
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr "error during stop() in sync_power_state."
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
#, fuzzy
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr "Instance is paused or suspended unexpectedly. Calling the stop API."
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
#, fuzzy
msgid "Instance is paused unexpectedly. Ignore."
msgstr "Instance is paused or suspended unexpectedly. Calling the stop API."
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr "Instance is not stopped. Calling the stop API."
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr "Instance is not (soft-)deleted."
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
#, fuzzy
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr "FLAGS.reclaim_instance_interval <= 0, skipping..."
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr "Reclaiming deleted instance"
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Loading compute driver '%s'"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr "No service record for host %s"
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
@@ -4900,7 +4912,7 @@ msgstr ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
@@ -4909,7 +4921,7 @@ msgstr ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, fuzzy, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr "Unrecognized value '%(action)s' for FLAGS.running_deleted_instance_action"
@@ -5143,16 +5155,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Failed to reboot instance"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr "Unrecognized read_deleted value '%s'"
@@ -5164,17 +5176,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "instance %s: rescued"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr "Change will make usage less than 0 for the following resources: %(unders)s"
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5191,34 +5203,60 @@ msgstr "version should be an integer"
msgid "Upgrade DB using Essex release first."
msgstr "Upgrade DB using Essex release first."
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
#, fuzzy
msgid "volume_usage_cache table not dropped"
@@ -5359,12 +5397,12 @@ msgstr "Quota exceeded for %(pid)s, tried to allocate floating IP"
msgid "Failed to update usages deallocating floating IP"
msgstr "Failed to update usages deallocating floating IP"
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Starting migration network for instance %(instance_uuid)s"
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
@@ -5373,12 +5411,12 @@ msgstr ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Finishing migration network for instance %(instance_uuid)s"
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
@@ -5387,7 +5425,7 @@ msgstr ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5398,12 +5436,12 @@ msgstr ""
"not visible to either the floating or instance DNS driver. It will be "
"ignored."
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr "Domain |%(domain)s| already exists, changing project to |%(project)s|."
@@ -5540,20 +5578,20 @@ msgstr "Disassociated %s stale fixed ip(s)"
msgid "setting network host"
msgstr "setting network host"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr "network allocations"
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, fuzzy, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr "networks retrieved for instance: |%(networks)s|"
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr "network deallocation for instance"
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5564,61 +5602,61 @@ msgstr ""
"|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be "
"created."
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, fuzzy, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr "Quota exceeded for %(pid)s, tried to allocate floating IP"
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
#, fuzzy
msgid "Failed to update usages deallocating fixed IP"
msgstr "Failed to update usages deallocating floating IP"
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr "Unable to release %s because vif doesn't exist."
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr "Leased IP |%(address)s|"
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr "IP %s leased that is not associated"
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr "IP |%s| leased that isn't allocated"
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr "Released IP |%(address)s|"
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr "IP %s released that is not associated"
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "IP %s released that was not leased"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr "%s must be an integer"
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr "Maximum allowed length for 'label' is 255."
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
@@ -5627,16 +5665,16 @@ msgstr ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr "cidr already in use"
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
@@ -5645,16 +5683,16 @@ msgstr ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr "Network already exists!"
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr "Network must be disassociated from project %s before delete"
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
@@ -5662,7 +5700,7 @@ msgstr ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, fuzzy, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5736,44 +5774,44 @@ msgstr "Host not found"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr "Fail to delete port %(portid)s with failure: %(exception)s"
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr "deallocate_for_instance() for %s"
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr "Failed to delete quantum port %(portid)s "
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, fuzzy, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr "Failed to delete quantum port %(portid)s "
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr "get_instance_nw_info() for %s"
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, fuzzy, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr "Fail to delete port %(portid)s with failure: %(exception)s"
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, fuzzy, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr "Fail to delete port %(portid)s with failure: %(exception)s"
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr "validate_networks() for %s"
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "Multiple floating IP pools matches found for name '%s'"
@@ -5968,17 +6006,17 @@ msgstr "No handler for matches of kind %s"
msgid "Failed to understand rule %(rule)r"
msgstr "Failed to understand rule %(rule)r"
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr "Got unknown keyword args to utils.execute: %r"
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r failed. Retrying."
@@ -6933,7 +6971,7 @@ msgstr "200 No Roles"
msgid "unexpected role header"
msgstr "unexpected role header"
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
@@ -6941,11 +6979,11 @@ msgstr ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
@@ -6980,17 +7018,17 @@ msgstr "After force-killing instances: %s"
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
#, fuzzy
msgid "spawn error"
msgstr "unknown guestmount error"
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr "Result: %(result)s is not a dict."
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -7000,22 +7038,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr "Result: %(result)s is not a list."
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, fuzzy, python-format
msgid ""
"Values do not match:\n"
@@ -7918,7 +7956,7 @@ msgstr "Windows version: %s "
msgid "get_available_resource called"
msgstr "get_available_resource called"
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr "Updating host stats"
@@ -8015,12 +8053,12 @@ msgstr "Live migration is not enabled on this host"
msgid "Live migration networks are not configured on this host"
msgstr "Live migration networks are not configured on this host"
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "Item not found"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, fuzzy, python-format
msgid "Duplicate VM name found: %s"
msgstr "duplicate name found: %s"
@@ -8075,25 +8113,32 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
#, fuzzy
msgid "migrate_disk_and_power_off called"
msgstr "Starting migrate_disk_and_power_off"
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr "confirm_migration called"
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr "finish_revert_migration called"
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, fuzzy, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s"
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, fuzzy, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
@@ -8102,22 +8147,22 @@ msgstr ""
"Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD "
"%(dest_vhd_path)s"
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, fuzzy, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s"
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Getting info for VHD %s"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, fuzzy, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
@@ -8126,16 +8171,16 @@ msgstr ""
"Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD "
"%(dest_vhd_path)s"
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr "finish_migration called"
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, fuzzy, python-format
msgid "Cannot find boot VHD file: %s"
msgstr "Unknown base file: %s"
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8278,12 +8323,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Using config drive"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr "Creating config drive at %(path)s"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "Creating config drive at %(path)s"
@@ -8342,58 +8387,58 @@ msgstr "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr "Failed to change vm state of %(vm_name)s to %(req_state)s"
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Failed to get metadata for ip: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Creating volume: %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "Set memory for vm %s..."
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, fuzzy, python-format
msgid "Set vCPUs for vm %s"
msgstr "Set vcpus for vm %s..."
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr "Controller not found"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr "Successfully changed vm state of %(vm_name)s to %(req_state)s"
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, fuzzy, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr "WMI job succeeded: %(desc)s, Elapsed=%(elap)s "
@@ -8442,7 +8487,7 @@ msgstr "Detach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Creating snapshot for instance %s"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr "Could not determine iscsi initiator name"
@@ -8476,215 +8521,215 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr "Unable to find vbd for vdi %s"
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Connecting to libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "Volume %s does not exist in Nexenta SA"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Connection to libvirt broke"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr "Can not handle authentication request for %d credentials"
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Connecting to libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr "During wait destroy, instance disappeared."
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr "Instance destroyed successfully."
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Going to stop instances"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr "Error from libvirt during undefineFlags. Retrying with undefine"
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr "Deleting instance files %(target)s"
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr "Failed to cleanup directory %(target)s: %(e)s"
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
#, fuzzy
msgid "Could not determine fibre channel world wide node names"
msgstr "Could not determine iscsi initiator name"
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
#, fuzzy
msgid "Could not determine fibre channel world wide port names"
msgstr "Could not determine iscsi initiator name"
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr "During detach_volume, instance disappeared."
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "No networks defined."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
#, fuzzy
msgid "During detach_interface, instance disappeared."
msgstr "During detach_volume, instance disappeared."
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "No networks defined."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr "Instance soft rebooted successfully."
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr "Failed to soft reboot instance."
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr "Instance shutdown successfully."
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr "Instance rebooted successfully."
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr "Instance is running"
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr "Instance spawned successfully."
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "data: %(data)r, fpath: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr "Guest does not have a console available"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr "Path '%(path)s' supports direct I/O"
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr "Path '%(path)s' does not support direct I/O: '%(ex)s'"
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr "Creating image"
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr "Using config drive"
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Injecting %(injection)s into image %(img_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr "Ignoring error injecting data into image %(img_id)s (%(e)s)"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
@@ -8693,20 +8738,20 @@ msgstr ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr "Config requested a custom CPU model, but no model name was provided"
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr "A CPU model name should not be set when a host CPU model is requested"
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr "CPU mode '%(mode)s' model '%(model)s' was chosen"
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
@@ -8714,7 +8759,7 @@ msgstr ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8722,12 +8767,12 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
@@ -8736,7 +8781,27 @@ msgstr ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, fuzzy, python-format
+msgid "Invalid exclusion expression %r"
+msgstr "Invalid reservation expiration %(expire)s."
+
+#: nova/virt/libvirt/driver.py:2567
+#, fuzzy, python-format
+msgid "Invalid inclusion expression %r"
+msgstr "Invalid reservation expiration %(expire)s."
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
#, fuzzy
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
@@ -8745,31 +8810,35 @@ msgstr ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. This error can be safely ignored for now."
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr "libvirt version is too old (does not support getVersion)"
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Getting image size for the image %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8777,21 +8846,21 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, fuzzy, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
@@ -8800,15 +8869,15 @@ msgstr ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr "Block migration can not be used with shared storage."
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr "Live migration can not be used without shared storage."
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
@@ -8817,7 +8886,7 @@ msgstr ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
@@ -8826,7 +8895,7 @@ msgstr ""
"Instance launched has CPU info:\n"
"%s"
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8841,7 +8910,7 @@ msgstr ""
"\n"
"Refer to %(u)s"
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
@@ -8850,22 +8919,22 @@ msgstr ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr "The firewall filter for %s does not exist"
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Live Migration failure: %(e)s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, fuzzy, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr "plug_vifs() failed %(cnt)d.Retry up to %(max_retry)d for %(hostname)s."
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, fuzzy, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
@@ -8874,38 +8943,38 @@ msgstr ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr "skipping %(path)s since it looks like volume"
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr "Getting disk size of %(i_name)s: %(e)s"
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr "Starting migrate_disk_and_power_off"
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr "Instance running successfully."
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr "Starting finish_migration"
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr "Starting finish_revert_migration"
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, fuzzy, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr "Deleting instance files %(target)s"
@@ -8940,11 +9009,11 @@ msgstr "The nwfilter(%(instance_filter_name)s) for%(name)s is not found."
msgid "iptables firewall: Setup Basic Filtering"
msgstr "iptables firewall: Setup Basic Filtering"
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr "You should specify libvirt_images_volume_group flag to use LVM images."
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr "Unknown image_type=%s"
@@ -9301,104 +9370,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr "Removing the logical volume '%s'"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr "Fetching image '%s' from glance"
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Writing image info file: %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, fuzzy, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr "Copying image '%s' to IVM"
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Creating logical volume"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr "Copying image to the device '%s'"
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Filters added to instance"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr "Could not create logical volume. No space left on any volume group."
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr "Unable to get checksum"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr "Image checksums do not match"
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr "Uncompressed image file not found"
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr "Connection error connecting PowerVM manager"
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Running cmd (subprocess): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr "File transfer to PowerVM manager failed"
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "File transfer to PowerVM manager failed"
@@ -9620,29 +9689,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr "Property %(attr)s not set for the managed object %(name)s"
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr "There is no VM registered"
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr "Virtual Machine with ref %s is not there"
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr "Logging out a session that is invalid or already logged out: %s"
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr "Session is faulty"
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr "Session Invalid"
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
#, fuzzy
msgid "No Virtual Machine has been registered yet"
msgstr " No Virtual Machine has been registered yet"
@@ -10199,12 +10268,12 @@ msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
msgid "Unable to find iSCSI Target"
msgstr "Unable to find address %r"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -10214,17 +10283,17 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Failed to find volume in db"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
@@ -10233,7 +10302,7 @@ msgstr ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr "The call to %(method)s returned an error: %(e)s. args=%(args)r"
@@ -10351,19 +10420,19 @@ msgstr "Failure while cleaning up attached VDIs"
msgid "Could not determine key: %s"
msgstr "Could not determine key: %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr "Host startup on XenServer is not supported."
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr "Unable to log in to XenAPI (is the Dom0 disk full?)"
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr "Host is member of a pool, but DB says otherwise"
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "Got exception: %s"
@@ -10655,17 +10724,17 @@ msgstr "Invalid value '%s' for xenapi_torrent_images"
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Asking xapi to fetch vhd image %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
@@ -10674,17 +10743,17 @@ msgstr ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "Fetching image %(image_id)s, type %(image_type_str)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Size for image %(image_id)s: %(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
@@ -10693,63 +10762,63 @@ msgstr ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copying VDI %s to /boot/guest on dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s destroyed"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr "Failed to fetch glance image"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr "Detected %(image_type_str)s format for image %(image_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Looking up vdi %s for PV kernel"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr "Unknown image format %(disk_image_type)s"
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s is still available"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr "Unable to parse rrd of %(vm_uuid)s"
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-scanning SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr "Flag sr_matching_filter '%s' does not respect formatting convention"
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
@@ -10759,50 +10828,50 @@ msgstr ""
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr "Cannot find SR of content-type ISO"
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr "ISO: looking at SR %(sr_rec)s"
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr "ISO: not iso content"
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr "ISO: iso content_type, no 'i18n-key' key"
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr "ISO: SR MATCHing our criteria"
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr "ISO: ISO, looking to see if it is host local"
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr "ISO: PBD %(pbd_ref)s disappeared"
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr "ISO: SR with local PBD"
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
@@ -10811,22 +10880,22 @@ msgstr ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr "Unable to obtain RRD XML updates with server details: %(server)s."
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr "Invalid statistics data from Xenserver: %s"
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
@@ -10835,66 +10904,66 @@ msgstr ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr "Timeout waiting for device %s to be created"
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr "Disconnecting stale VDI %s from compute domU"
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Plugging VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "Plugging VBD %s done."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr "VBD %(vbd_ref)s plugged as %(orig_dev)s"
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Destroying VBD for VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "Destroying VBD for VDI %s done."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Running pygrub against %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Found Xen kernel %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "No Xen kernel found. Booting HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10902,16 +10971,16 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr "Partitions:"
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr " %(num)s: %(ptype)s %(size)d sectors"
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
@@ -10920,12 +10989,12 @@ msgstr ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "Writing partition table %s done."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
@@ -10934,7 +11003,7 @@ msgstr ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
@@ -10943,16 +11012,16 @@ msgstr ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr "Manipulating interface files directly"
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr "Failed to mount filesystem (expected for non-linux instances): %s"
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr "This domU must be running on the host specified by xenapi_connection_url"
@@ -11137,7 +11206,7 @@ msgstr "Created VIF %(vif_ref)s, network %(network_ref)s"
msgid "Injecting hostname to xenstore"
msgstr "Injecting hostname to xenstore"
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
@@ -11146,21 +11215,25 @@ msgstr ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "Bad networks format"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr "Migrate Receive failed"
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
#, fuzzy
msgid "VM.assert_can_migrate failed"
msgstr "VM.assert_can_migratefailed"
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr "Migrate Send failed"
@@ -11232,7 +11305,12 @@ msgstr "Unable to obtain target information %(mountpoint)s"
msgid "Unable to obtain target information %(connection_data)s"
msgstr "Unable to obtain target information %(connection_data)s"
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "LPAR instance '%(instance_name)s' could not be found"
@@ -11300,61 +11378,3 @@ msgstr "status must be available"
msgid "status must be 'available'"
msgstr "status must be available"
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Unexpected error while running command."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "Error starting xvp: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Failed unplugging gateway interface '%s'"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Unplugged gateway interface '%s'"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Failed unplugging gateway interface '%s'"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Unplugged gateway interface '%s'"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr "Failed unplugging gateway interface '%s'"
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr "Unplugged gateway interface '%s'"
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Network %(network_id)s could not be found."
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr "Must specify vmwareapi_wsdl_loc"
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr "Unable to get SR for this host: %s"
-
diff --git a/nova/locale/es/LC_MESSAGES/nova.po b/nova/locale/es/LC_MESSAGES/nova.po
index b35f586dc..d46bad9a2 100644
--- a/nova/locale/es/LC_MESSAGES/nova.po
+++ b/nova/locale/es/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-05-16 06:44+0000\n"
"Last-Translator: Paco Molinero <paco@byasl.com>\n"
"Language-Team: Spanish <es@li.org>\n"
@@ -175,7 +175,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1450,21 +1450,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "corriendo cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "El resultado fue %s"
@@ -1868,7 +1868,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Desasociar dirección %s"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2046,33 +2046,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Fallo al generar metadatos para la ip %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Capturado error: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2144,62 +2144,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2250,7 +2250,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2759,7 +2759,7 @@ msgstr "atributo no soportado: %s"
msgid "Detach interface %s"
msgstr "Iniciando interfaz VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2866,29 +2866,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "configurando la red del host"
@@ -2935,54 +2933,58 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "el grupo %s ya existe"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "configurando la red del host"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3295,6 +3297,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Liberar dirección %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Liberar dirección %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3464,602 +3476,602 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "recibido %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Capturado error: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "configurando la red del host"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "Asignar dirección"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "el grupo %s ya existe"
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "configurando la red del host"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Reiniciar instancia %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "Sucedió un error inexperado: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instancia %s: rescatada"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Capturado error: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "Capturado error: %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr ""
"Quota de instancias superada. Sólo puedes ejecutar %s instancias más de "
"este tipo."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
"Quota de instancias superada. Sólo puedes ejecutar %s instancias más de "
"este tipo."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Imposible adjuntar volumen a la instancia %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "Vamos a ejecutar %s insntacias..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Se va a iniciar la finalización de las instancias"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "La instacia %(instance_id)s no esta suspendida"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Se va a iniciar la finalización de las instancias"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Vamos a ejecutar %s insntacias..."
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Se va a iniciar la finalización de las instancias"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Vamos a ejecutar %s insntacias..."
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Vamos a ejecutar %s insntacias..."
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "Comenzando snapshot para la VM %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Se va a iniciar la finalización de las instancias"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Crear Grupo de Seguridad %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Imposible destruir VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Revocar ingreso al grupo de seguridad %s"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Borrar grupo de seguridad %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Autorizar ingreso al grupo de seguridad %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Revocar ingreso al grupo de seguridad %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4118,34 +4130,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4380,7 +4392,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4644,183 +4656,183 @@ msgstr "instancia %s: arrancada"
msgid "Host %(host)s not found"
msgstr "La instacia %(instance_id)s no esta suspendida"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Fallo al generar metadatos para la ip %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "La instacia %(instance_id)s no esta suspendida"
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Borrando usuario %s"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "instancia %s: arrancada"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Borrando usuario %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5043,16 +5055,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Fallo a reinicia la instancia"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5064,17 +5076,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "instancia %s: rescatada"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5091,34 +5103,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5255,31 +5293,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "La instacia %(instance_id)s no esta suspendida"
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "La instacia %(instance_id)s no esta suspendida"
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5287,12 +5325,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5427,20 +5465,20 @@ msgstr ""
msgid "setting network host"
msgstr "configurando la red del host"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5448,98 +5486,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5611,44 +5649,44 @@ msgstr "instancia %s: arrancada"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "configurando la red del host"
@@ -5839,17 +5877,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Ejecutando cmd (subprocesos): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6776,17 +6814,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6821,16 +6859,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6840,22 +6878,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7744,7 +7782,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7838,12 +7876,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7898,62 +7936,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "configurando la red del host"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8093,12 +8138,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Se va a iniciar la finalización de las instancias"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8163,59 +8208,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Fallo al generar metadatos para la ip %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Borrando usuario %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "configurando la red del host"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "instancia %s: arrancada"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8264,7 +8309,7 @@ msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Creando una instancia raw"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8298,239 +8343,239 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Conectando a libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "el grupo de volumenes %s no existe"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Conexión a libvirt rota"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Conectando a libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Vamos a ejecutar %s insntacias..."
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "instancia %s: reiniciada"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Fallo a reinicia la instancia"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "El usuario no tiene privilegios de administrador"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Pidiendo xapi a subir %(vdi_uuids)s como ID %(image_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8538,49 +8583,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Fallo al generar metadatos para la ip %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8588,50 +8657,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8641,67 +8710,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Fallo de autenticación: %s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8734,11 +8803,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9077,105 +9146,105 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Imposible encontrar volumen %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Iniciando interfaz puente para %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Imposible encontrar volumen %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Fallo a reinicia la instancia"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Imposible desasociar volumen %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Ejecutando cmd (subprocesos): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "Falló la conexión a melange"
@@ -9391,29 +9460,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9937,14 +10006,14 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Imposible encontrar volumen %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
"El punto de montaje %(mountpoint)s esta unido a la instancia "
"%(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s"
@@ -9954,26 +10023,26 @@ msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Imposible desasociar volumen %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
"El punto de montaje %(mountpoint)s se desligó de la instancia "
"%(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10085,19 +10154,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "Obtenida excepción %s"
@@ -10378,236 +10447,236 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Pidiendo xapi a subir %(vdi_uuids)s como ID %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Tamaño para imagen %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copiando VDI %s a /boot/guest on dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s destruído"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "Fallo a reinicia la instancia"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Buscando vid %s para el kernel PV"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s está todavía disponible"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-escaneando SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s tiene origen en %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Ejecutando pygrub contra %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Kernel Xen Encontrado %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "Kernel Xen no encontrado. Reiniciando HVM"
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10615,51 +10684,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10844,26 +10913,30 @@ msgstr "Creando VIF para VM %(vm_ref)s, red %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10934,7 +11007,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Volume_separado: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "La instacia %(instance_id)s no esta suspendida"
@@ -11000,70 +11078,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Error inesperado mientras el comando se ejecutaba"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Comando: %(cmd)s\n"
-#~ "Código de salida: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Fallo al suspender la instancia"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Fallo al suspender la instancia"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Iniciando interfaz puente para %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Iniciando interfaz puente para %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/fr/LC_MESSAGES/nova.po b/nova/locale/fr/LC_MESSAGES/nova.po
index a425addc2..0f9f99b15 100644
--- a/nova/locale/fr/LC_MESSAGES/nova.po
+++ b/nova/locale/fr/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-05-14 08:35+0000\n"
"Last-Translator: Erwan Gallen <Unknown>\n"
"Language-Team: French <fr@li.org>\n"
@@ -173,7 +173,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "La paire de clés de donnée n'est pas valide"
@@ -1482,21 +1482,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Execution de la cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Le résultat était %s"
@@ -1910,7 +1910,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Désassociation de l'adresse %s"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2093,33 +2093,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Erreur interceptée : %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2191,62 +2191,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2297,7 +2297,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2806,7 +2806,7 @@ msgstr "attribut non reconnu : %s"
msgid "Detach interface %s"
msgstr "Démarrage de l'interface VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2914,29 +2914,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Le certificat %(certificate_id)s non trouvé."
@@ -2983,56 +2981,60 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "L'IP dynamique %(address)s n'est pas associée."
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
#, fuzzy
msgid "floating ip is already associated"
msgstr "L'IP dynamique %(address)s est associée."
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "Aucune IP dynamique trouvée pour l'id %(id)s."
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
#, fuzzy
msgid "Floating ip is not associated"
msgstr "L'IP dynamique %(address)s n'est pas associée."
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "L'IP dynamique %(address)s n'est pas associée."
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3346,6 +3348,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Désallocation de l'adresse %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Désallocation de l'adresse %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3517,604 +3529,604 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "%s reçu"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Erreur interceptée : %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "réglage de l'hôte réseau"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "adresse de départ"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
#, fuzzy
msgid "No fixed IP found."
msgstr "Aucunes IPs fixes trouvées."
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "L'IP dynamique %(address)s est associée."
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "adresse de départ"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "réglage de l'hôte réseau"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "%(req)s est requis pour créer un réseau."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Re-démarrage de l'instance %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Le service %(service_id)s ne peut pas être trouvé."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Le service %(service_id)s ne peut pas être trouvé."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "\"Erreur inopinée\" remontée : %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "instance %s: récupérée"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Erreur interceptée : %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "Erreur interceptée : %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr ""
"Quota d'instances dépassé. Vous ne pouvez éxécuter que %s instances de ce"
" type de plus."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
"Quota d'instances dépassé. Vous ne pouvez éxécuter que %s instances de ce"
" type de plus."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Impossible d'attacher le volume à l'instance %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "Démarrage de %s instances..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Début de la destruction d'instance"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "Le type d'instance %(instance_type_id)s ne peut être trouvé."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Début de la destruction d'instance"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Va essayer d'arrêter %s"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Va essayer d'arrêter %s"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Va essayer d'arrêter %s"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Va essayer d'arrêter %s"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "Début de création d'instantané (snapshot) pour la VM %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Va essayer d'arrêter %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Création du groupe de sécurité %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Impossible de supprimer le VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Révocation de groupe de sécurité %s"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Suppression du groupe de sécurité %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Authorisation du groupe de sécurité %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Révocation de groupe de sécurité %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4173,34 +4185,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4435,7 +4447,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4702,183 +4714,183 @@ msgstr "Le réseau %(network_id)s n'a pas été trouvé."
msgid "Host %(host)s not found"
msgstr "L'hôte %(host)s ne peut pas être trouvé."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "L'instance %(instance_id)s n'a pas pu être trouvée."
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Suppression de l'utilisateur %s"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "instance %s: a démarrée"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Suppression de l'utilisateur %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5102,16 +5114,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Échec du redémarrage de l'instance"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5123,17 +5135,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "instance %s: récupérée"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5150,34 +5162,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5315,31 +5353,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Volume non trouvé pour l'instance %(instance_id)s."
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "L'adresse IP fixe %(address)s est déjà utilisée."
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Volume non trouvé pour l'instance %(instance_id)s."
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "L'adresse IP fixe %(address)s est déjà utilisée."
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5347,12 +5385,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5487,21 +5525,21 @@ msgstr ""
msgid "setting network host"
msgstr "réglage de l'hôte réseau"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
#, fuzzy
msgid "network allocations"
msgstr "Aucun disque sur %(location)s"
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5509,98 +5547,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "IP %s libérée qui n'était pas allouée"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr "La somme du nombre de réseau et le début de vlan ne peut excéder 4094"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5672,44 +5710,44 @@ msgstr "Aucuns types d'instance trouvés."
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "Aucune IP dynamique trouvée pour l'id %(id)s."
@@ -5904,17 +5942,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Execution de la commande (sous-processus) : %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6841,17 +6879,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6886,16 +6924,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6905,22 +6943,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7814,7 +7852,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7908,12 +7946,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7968,62 +8006,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Aucune IP dynamique trouvée pour l'id %(id)s."
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8163,12 +8208,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Début de la destruction d'instance"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "Injection du chemin d'accès : '%s'"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "Injection du chemin d'accès : '%s'"
@@ -8233,59 +8278,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Suppression de l'utilisateur %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "Aucune IP dynamique trouvée pour l'id %(id)s."
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "Aucuns types d'instance trouvés."
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8334,7 +8379,7 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Création d'une instance raw"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8368,243 +8413,243 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Connexion à libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "Le groupe de volume %s n'existe pas"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Connexion à libvirt interrompue"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Connexion à libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Va essayer d'arrêter %s"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Aucun réseau défini."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Aucun réseau défini."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "instance %s: re-démarrée"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Échec du redémarrage de l'instance"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "data: %(data)r, fpath: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "L’utilisateur n'a pas les privilèges administrateur"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Demande de chargement à xapi de %(vdi_uuids)s en tant qu'ID %(image_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
"instance %(inst_name)s : l'erreur d'injection de donné dans l'image "
"%(img_id)s (%(e)s) a été ignorée"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8612,49 +8657,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Impossible de récupérer les méta-donnérs pour l'IP : %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8662,50 +8731,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8715,67 +8784,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Echec d'authentification : %s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8808,11 +8877,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9151,105 +9220,105 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Impossible de trouver le volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Démarrage de l'interface de Bridge %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Impossible de trouver le volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Échec du redémarrage de l'instance"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Impossible de détacher le volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Execution de la commande (sous-processus) : %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "La connexion à Melange a échoué"
@@ -9465,29 +9534,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -10012,14 +10081,14 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Impossible de trouver le volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
"Le point de montage %(mountpoint)s a été attaché à l'instance "
"%(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -10029,26 +10098,26 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Impossible de détacher le volume %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
"Le point de montage %(mountpoint)s à été détaché de l'instance "
"%(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10161,19 +10230,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "Impossible de déchiffrer la clef privée : %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "Reçu exception : %s"
@@ -10455,170 +10524,170 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Demande de chargement à xapi de %(vdi_uuids)s en tant qu'ID %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "Image %(image_location)s enregistré avec l'id %(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Taille de l'image %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copie de VDI %s vers /boot/guest sur dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Noyau/Ramdisk VDI %s détruit"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "Échec du redémarrage de l'instance"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Recherche du VDI %s pour le PV kernel"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "Le VDI %s est toujours disponible"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-parcours de SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s à pour parent %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
@@ -10627,66 +10696,66 @@ msgstr ""
"L'UUID parent %(parent_uuid)s ne correspond pas au parent originel "
"%(original_parent_uuid)s, attente de coalesence..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Connexion de VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "Connexion de VBD %s terminée."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Destruction de VBD pour la VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "Destruction de VBD pour la VDI %s terminée."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Exécution de pygrub sur %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Kernel Xen %s trouvé"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "Pas de kernel Xen trouvé. Démarrage en HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10694,51 +10763,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "Ecriture de la table de partitionnement %s terminée."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10926,26 +10995,30 @@ msgstr "Création du VIF pour la VM %(vm_ref)s, réseau %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -11016,7 +11089,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "L'instance %(instance_id)s n'a pas pu être trouvée."
@@ -11082,70 +11160,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Erreur imprévue lors de l'éxecution de la commande"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Commande : %(cmd)s\n"
-#~ "Valeur retournée : %(exit_code)s\n"
-#~ "Sortie standard : %(stdout)r\n"
-#~ "Sortie d'erreur : %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "Erreur au démarrage xvp : %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Échec de la suspension de l'instance"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Échec de la suspension de l'instance"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Démarrage de l'interface de Bridge %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Démarrage de l'interface de Bridge %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Le réseau %(network_id)s n'a pas été trouvé."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/it/LC_MESSAGES/nova.po b/nova/locale/it/LC_MESSAGES/nova.po
index ef0283d95..b004f4764 100644
--- a/nova/locale/it/LC_MESSAGES/nova.po
+++ b/nova/locale/it/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-04-01 18:59+0000\n"
"Last-Translator: simone.sandri <lexluxsox@hotmail.it>\n"
"Language-Team: Italian <it@li.org>\n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1438,21 +1438,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Eseguendo cmd (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Il risultato é %s"
@@ -1853,7 +1853,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2029,33 +2029,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Impossibile sospendere l'istanza"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2127,62 +2127,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2233,7 +2233,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2737,7 +2737,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr "Avviando l'interfaccia VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2843,29 +2843,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "istanza %s: sospensione in corso"
@@ -2912,53 +2910,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3266,6 +3268,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3434,589 +3446,589 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "ricevuto %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "istanza %s: ripristino rete"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Impossibile sospendere l'istanza"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "istanza %s: ripristino"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Impossibile montare il volume all'istanza %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "istanza %s: creazione snapshot in corso"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Impossibile riavviare l'istanza"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Impossibile riavviare l'istanza"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Impossibile riavviare l'istanza"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Impossibile riavviare l'istanza"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Impossibile localizzare il volume %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4075,34 +4087,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4334,7 +4346,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4595,182 +4607,182 @@ msgstr "istanza %s: creazione snapshot in corso"
msgid "Host %(host)s not found"
msgstr "istanza %s: sospensione in corso"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Impossibile riavviare l'istanza"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "istanza %s: creazione snapshot in corso"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4993,16 +5005,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Impossibile riavviare l'istanza"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5014,17 +5026,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5041,34 +5053,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5205,31 +5243,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5237,12 +5275,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5377,20 +5415,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5398,98 +5436,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5561,44 +5599,44 @@ msgstr "istanza %s: sospensione in corso"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5786,17 +5824,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Esecuzione del comando (sottoprocesso): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6718,17 +6756,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6763,16 +6801,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6782,22 +6820,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7685,7 +7723,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7778,12 +7816,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7838,62 +7876,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Impossibile montare il volume all'istanza %s"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8033,12 +8078,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Impossibile montare il volume all'istanza %s"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8103,59 +8148,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Avviando l'interfaccia Bridge per %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "istanza %s: sospensione in corso"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8204,7 +8249,7 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Impossibile montare il volume all'istanza %s"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8238,239 +8283,239 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Impossibile riavviare l'istanza"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "volume %s: creato con successo"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Impossibile riavviare l'istanza"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "L'utente non ha i privilegi dell'amministratore"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8478,49 +8523,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Impossibile smontare il volume %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8528,50 +8597,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8581,67 +8650,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8674,11 +8743,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9017,105 +9086,105 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Impossibile localizzare il volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Avviando l'interfaccia Bridge per %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Impossibile localizzare il volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Impossibile riavviare l'istanza"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Impossibile smontare il volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Esecuzione del comando (sottoprocesso): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9329,29 +9398,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9870,12 +9939,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Impossibile localizzare il volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s montato all'istanza %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -9885,24 +9954,24 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Impossibile smontare il volume %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Mountpoint %(mountpoint)s smontato dall'istanza %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10011,19 +10080,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10299,236 +10368,236 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "nessun metodo per il messaggio: %s"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk VDI %s distrutti"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "Impossibile riavviare l'istanza"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Cercando vdi %s per kernel PV"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10536,51 +10605,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10763,26 +10832,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10853,7 +10926,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10919,70 +10997,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Si e' verificato un errore inatteso durante l'esecuzione del comando."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Comando: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Impossibile sospendere l'istanza"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Impossibile sospendere l'istanza"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Avviando l'interfaccia Bridge per %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Avviando l'interfaccia Bridge per %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/ja/LC_MESSAGES/nova.po b/nova/locale/ja/LC_MESSAGES/nova.po
index 442816c22..d75fc6627 100644
--- a/nova/locale/ja/LC_MESSAGES/nova.po
+++ b/nova/locale/ja/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-08-23 11:22+0000\n"
"Last-Translator: Thierry Carrez <thierry.carrez+lp@gmail.com>\n"
"Language-Team: \n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1440,21 +1440,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "コマンド(SSH)を実行: %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "ã‚³ãƒžãƒ³ãƒ‰å®Ÿè¡Œçµæžœï¼š %s"
@@ -1858,7 +1858,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Disassociate address: アドレス %s ã®é–¢é€£ä»˜ã‘を解除ã—ã¾ã™ã€‚"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2034,33 +2034,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "ip %s ã«å¯¾ã™ã‚‹ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "エラー %s をキャッãƒã—ã¾ã—ãŸã€‚"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2132,62 +2132,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2238,7 +2238,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2746,7 +2746,7 @@ msgstr "アトリビュート %s ã¯ã‚µãƒãƒ¼ãƒˆã•れã¦ã„ã¾ã›ã‚“。"
msgid "Detach interface %s"
msgstr "VLANインタフェース %s ã‚’é–‹å§‹ã—ã¾ã™ã€‚"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2853,29 +2853,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
@@ -2922,54 +2920,58 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "グループ %s ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "インスタンス %(instance_id)s ã«ã‚¢ãƒ‰ãƒ¬ã‚¹ %(public_ip)s を割り当ã¦"
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3281,6 +3283,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Release address: アドレス %s を開放ã—ã¾ã™ã€‚"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Release address: アドレス %s を開放ã—ã¾ã™ã€‚"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3450,598 +3462,598 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "å—信: %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "エラー %s をキャッãƒã—ã¾ã—ãŸã€‚"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "開始アドレス"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "グループ %s ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "開始アドレス"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Reboot instance: インスタンス %r ã‚’å†èµ·å‹•ã—ã¾ã™ã€‚"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "予期ã—ãªã„エラー発生: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "インスタンス %s: rescued"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "エラー %s をキャッãƒã—ã¾ã—ãŸã€‚"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "エラー %s をキャッãƒã—ã¾ã—ãŸã€‚"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr "インスタンスã®ã‚¯ã‚ªãƒ¼ã‚¿ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ã‚¿ã‚¤ãƒ—ã«ãŠã„ã¦ã¯ã‚㨠%s インスタンスã—ã‹å®Ÿè¡Œã§ãã¾ã›ã‚“。"
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr "インスタンスã®ã‚¯ã‚ªãƒ¼ã‚¿ã‚’è¶…ãˆã¾ã—ãŸã€‚ã“ã®ã‚¿ã‚¤ãƒ—ã«ãŠã„ã¦ã¯ã‚㨠%s インスタンスã—ã‹å®Ÿè¡Œã§ãã¾ã›ã‚“。"
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "インスタンス %s ã«ãƒœãƒªãƒ¥ãƒ¼ãƒ ã‚’接続(attach)ã§ãã¾ã›ã‚“。"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "%s 個ã®ã‚¤ãƒ³ã‚¹ã‚¿ãƒ³ã‚¹ã®èµ·å‹•ã‚’å§‹ã‚ã¾ã™â€¦"
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "インスタンス終了処ç†ã‚’é–‹å§‹ã—ã¾ã™ã€‚"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "インスタンス終了処ç†ã‚’é–‹å§‹ã—ã¾ã™ã€‚"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "VM %s ã«å¯¾ã™ã‚‹ã‚¹ãƒŠãƒƒãƒ—ショットを開始ã—ã¾ã™ã€‚"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Create Security Group: セキュリティグループ %s を作æˆã—ã¾ã™ã€‚"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "VBD %s ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Revoke security group ingress: ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚°ãƒ«ãƒ¼ãƒ—è¨±å¯ %s ã®å–消"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Delete security group: セキュリティグループ %s を削除ã—ã¾ã™ã€‚"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Authorize security group ingress: ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚°ãƒ«ãƒ¼ãƒ—è¨±å¯ %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Revoke security group ingress: ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã‚°ãƒ«ãƒ¼ãƒ—è¨±å¯ %s ã®å–消"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4100,34 +4112,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4360,7 +4372,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4627,183 +4639,183 @@ msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
msgid "Host %(host)s not found"
msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "ip %s ã«å¯¾ã™ã‚‹ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Deleting user: ユーザ %s を削除ã—ã¾ã™ã€‚"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Deleting user: ユーザ %s を削除ã—ã¾ã™ã€‚"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5023,16 +5035,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5044,17 +5056,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "インスタンス %s: rescued"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5071,34 +5083,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5235,31 +5273,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "インスタンス終了処ç†ã‚’é–‹å§‹ã—ã¾ã™ã€‚"
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "インスタンス %(instance_id)s ã«ã‚¢ãƒ‰ãƒ¬ã‚¹ %(public_ip)s を割り当ã¦"
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "インスタンス %(instance_id)s ã«ã‚¢ãƒ‰ãƒ¬ã‚¹ %(public_ip)s を割り当ã¦"
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5267,12 +5305,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5407,20 +5445,20 @@ msgstr ""
msgid "setting network host"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5428,98 +5466,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "リースã—ã¦ã„ãªã„IP %s ãŒé–‹æ”¾ã•れã¾ã—ãŸã€‚"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ã®æ•°ã¨VLANã®é–‹å§‹ç•ªå·ã®å’Œã¯ 4094 より大ããã§ãã¾ã›ã‚“。"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5591,44 +5629,44 @@ msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
@@ -5819,17 +5857,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "コマンド実行(subprocess): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6752,17 +6790,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6797,16 +6835,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6816,22 +6854,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7718,7 +7756,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7812,12 +7850,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7872,62 +7910,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8067,12 +8112,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "インスタンス終了処ç†ã‚’é–‹å§‹ã—ã¾ã™ã€‚"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "ファイルパス '%s' を埋ã‚込んã§ã„ã¾ã™"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "ファイルパス '%s' を埋ã‚込んã§ã„ã¾ã™"
@@ -8137,59 +8182,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "ip %s ã«å¯¾ã™ã‚‹ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Deleting user: ユーザ %s を削除ã—ã¾ã™ã€‚"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ›ã‚¹ãƒˆã®è¨­å®šã‚’ã—ã¾ã™ã€‚"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "インスタンス %s: èµ·å‹•ã—ã¾ã—ãŸã€‚"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8238,7 +8283,7 @@ msgstr "ボリューム切断: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "raw instanceを生æˆã—ã¾ã™ã€‚"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8272,237 +8317,237 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "libvirt %s ã¸æŽ¥ç¶šã—ã¾ã™ã€‚"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "ボリュームグループ%sãŒå­˜åœ¨ã—ã¾ã›ã‚“。"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "libvirtã¸ã®æŽ¥ç¶šãŒåˆ‡ã‚Œã¦ã„ã¾ã™ã€‚"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "libvirt %s ã¸æŽ¥ç¶šã—ã¾ã™ã€‚"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "%s ã‚’åœæ­¢ã—よã†ã¨ã—ã¦ã„ã¾ã™"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "インスタンス%s: å†èµ·å‹•ã—ã¾ã—ãŸã€‚"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "データ: %(data)r, ファイルパス: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "ID %(image_id)s ã¨ã—㦠%(vdi_uuids)s ã®ã‚¢ãƒƒãƒ—ロードã®ç‚ºã« xapi ã‚’å•ã„åˆã‚ã›ã—ã¦ã„ã¾ã™"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr "インスタンス %(inst_name)s: イメージ %(img_id)s ã¸ã®ãƒ‡ãƒ¼ã‚¿åŸ‹ã‚è¾¼ã¿ã®ã‚¨ãƒ©ãƒ¼ã‚’無視ã—ã¦ã„ã¾ã™ (%(e)s)"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8510,49 +8555,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "ip %s ã«å¯¾ã™ã‚‹ãƒ¡ã‚¿ãƒ‡ãƒ¼ã‚¿ã®å–å¾—ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8560,50 +8629,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8613,67 +8682,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "%s ã®èªè¨¼ã«å¤±æ•—ã—ã¾ã—ãŸã€‚"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8706,11 +8775,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9049,104 +9118,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "ボリューム %s ã®å­˜åœ¨ãŒç¢ºèªã§ãã¾ã›ã‚“。"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "%s 用ã®ãƒ–リッジインタフェースを開始ã—ã¾ã™ã€‚"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "ボリューム %s ã®å­˜åœ¨ãŒç¢ºèªã§ãã¾ã›ã‚“。"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "ボリューム %s を切断(detach)ã§ãã¾ã›ã‚“"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "コマンド実行(subprocess): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9360,29 +9429,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9907,12 +9976,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "ボリューム %s ã®å­˜åœ¨ãŒç¢ºèªã§ãã¾ã›ã‚“。"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "インスタンス %(instance_name)s ã«ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆ %(mountpoint)s を接続(attach)ã—ã¾ã—ãŸ"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "ボリューム切断: %(instance_name)s, %(mountpoint)s"
@@ -9922,24 +9991,24 @@ msgstr "ボリューム切断: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "ボリューム %s を切断(detach)ã§ãã¾ã›ã‚“"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "インスタンス %(instance_name)s ã‹ã‚‰ãƒžã‚¦ãƒ³ãƒˆãƒã‚¤ãƒ³ãƒˆ %(mountpoint)s を切断(detach)ã—ã¾ã—ãŸ"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10051,19 +10120,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "プライベートキーã®å¾©å·ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "例外 %s ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
@@ -10342,237 +10411,237 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "ID %(image_id)s ã¨ã—㦠%(vdi_uuids)s ã®ã‚¢ãƒƒãƒ—ロードã®ç‚ºã« xapi ã‚’å•ã„åˆã‚ã›ã—ã¦ã„ã¾ã™"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "イメージ %(image_location)s ㌠ID %(image_id)s ã§ç™»éŒ²ã•れã¾ã—ãŸ"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "イメージ %(image)s ã®ã‚µã‚¤ã‚º:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "ドメイン0 上㮠/boot/guest 㫠VDI %s をコピー中"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "カーãƒãƒ«/RAMディスク VDI %s ãŒå‰Šé™¤ã•れã¾ã—ãŸ"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "PV kernelã®vdi %s ã‚’å–å¾—ã—ã¾ã™ã€‚"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s ã¯ä¾ç„¶ã¨ã—ã¦å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "SR %s ã‚’å†ã‚¹ã‚­ãƒ£ãƒ³ã—ã¾ã™ã€‚"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s ã®è¦ªã¯ %(parent_ref)s ã§ã™"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr "親 %(parent_uuid)s ãŒå…ƒã€…ã®è¦ª %(original_parent_uuid)s ã¨ä¸€è‡´ã—ã¾ã›ã‚“。作æˆã‚’待機ã—ã¦ã„ã¾ã™â€¦"
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "VBD %s を接続ã—ã¦ã„ã¾ã™â€¦ "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "仮想ブロックデãƒã‚¤ã‚¹(VBD) %s ã®æŽ¥ç¶šãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "VDI %s 用ã®ä»®æƒ³ãƒ–ロックデãƒã‚¤ã‚¹(VBD)を削除ã—ã¦ã„ã¾ã™â€¦ "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "VDI %s 用ã®ä»®æƒ³ãƒ–ロックデãƒã‚¤ã‚¹(VBD)ã®å‰Šé™¤ãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "%s ã«å¯¾ã—㦠pygrub を実行ã—ã¦ã„ã¾ã™"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Xen Kernel %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã—ãŸã€‚"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
"No Xen kernel found. Booting HVM.\r\n"
"Xen 用カーãƒãƒ«ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。完全仮想化モード(HVM)ã§èµ·å‹•ã—ã¦ã„ã¾ã™ã€‚"
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10580,51 +10649,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "パーティションテーブル %s ã®æ›¸ãè¾¼ã¿ãŒå®Œäº†ã—ã¾ã—ãŸã€‚"
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10811,26 +10880,30 @@ msgstr "VM %(vm_ref)s, network %(network_ref)s 用仮想インターフェース
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10901,7 +10974,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "ボリューム切断: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10967,70 +11045,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "コマンド実行ã«ãŠã„ã¦äºˆæœŸã—ãªã„エラーãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "コマンド: %(cmd)s\n"
-#~ "終了コード: %(exit_code)s\n"
-#~ "標準出力: %(stdout)r\n"
-#~ "標準エラー出力: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "xvp ã®é–‹å§‹ä¸­ã«ã‚¨ãƒ©ãƒ¼: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "プライベートキーã®å¾©å·ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "プライベートキーã®å¾©å·ã«å¤±æ•—ã—ã¾ã—ãŸ: %s"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "%s 用ã®ãƒ–リッジインタフェースを開始ã—ã¾ã™ã€‚"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "%s 用ã®ãƒ–リッジインタフェースを開始ã—ã¾ã™ã€‚"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/ko/LC_MESSAGES/nova.po b/nova/locale/ko/LC_MESSAGES/nova.po
index 2a536b62c..a6463b245 100644
--- a/nova/locale/ko/LC_MESSAGES/nova.po
+++ b/nova/locale/ko/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-12-16 04:42+0000\n"
"Last-Translator: Zhongyue Luo <lzyeval@gmail.com>\n"
"Language-Team: Korean <ko@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1433,21 +1433,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1848,7 +1848,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2022,33 +2022,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "%s ì¸ìŠ¤í„´ìŠ¤ì— ë³¼ë¥¨ìž¥ì°© í•  수 없습니다"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2120,62 +2120,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2226,7 +2226,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2728,7 +2728,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2834,29 +2834,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "ì¸ìŠ¤í„´ìŠ¤ %s: 스냅샷 저장중"
@@ -2903,53 +2901,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3254,6 +3256,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3422,583 +3434,583 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "ì¸ìŠ¤í„´ìŠ¤ %s를 재부팅합니다"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "%s ì¸ìŠ¤í„´ìŠ¤ì— ë³¼ë¥¨ìž¥ì°© í•  수 없습니다"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "ì¸ìŠ¤í„´ìŠ¤ %s: 스냅샷 저장중"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "%s ë³¼ë¥¨ì„ ì°¾ì„수 없습니다"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4056,34 +4068,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4313,7 +4325,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4572,182 +4584,182 @@ msgstr "ì¸ìŠ¤í„´ìŠ¤ %s: 스냅샷 저장중"
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "ì¸ìŠ¤í„´ìŠ¤ %s: 스냅샷 저장중"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4966,16 +4978,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4987,17 +4999,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5014,34 +5026,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5177,31 +5215,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5209,12 +5247,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5349,20 +5387,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5370,98 +5408,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5531,44 +5569,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5756,17 +5794,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6683,17 +6721,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6728,16 +6766,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6747,22 +6785,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7648,7 +7686,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7741,12 +7779,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7801,62 +7839,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "%s ì¸ìŠ¤í„´ìŠ¤ì— ë³¼ë¥¨ìž¥ì°© í•  수 없습니다"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7995,12 +8040,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "%s ì¸ìŠ¤í„´ìŠ¤ì— ë³¼ë¥¨ìž¥ì°© í•  수 없습니다"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8065,58 +8110,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8165,7 +8210,7 @@ msgstr "볼륨 탈착: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "%s ì¸ìŠ¤í„´ìŠ¤ì— ë³¼ë¥¨ìž¥ì°© í•  수 없습니다"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8199,235 +8244,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8435,49 +8480,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "%s 볼륨 íƒˆì°©ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8485,50 +8554,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8538,67 +8607,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8631,11 +8700,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8974,104 +9043,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "%s ë³¼ë¥¨ì„ ì°¾ì„수 없습니다"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "%s ë³¼ë¥¨ì„ ì°¾ì„수 없습니다"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "%s 볼륨 íƒˆì°©ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9285,29 +9354,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9825,12 +9894,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "%s ë³¼ë¥¨ì„ ì°¾ì„수 없습니다"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "%(instance_name)s ì¸ìŠ¤í„´ìŠ¤ì— %(mountpoint)s 마운트지ì ì´ 장착ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "볼륨 탈착: %(instance_name)s, %(mountpoint)s"
@@ -9840,24 +9909,24 @@ msgstr "볼륨 탈착: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "%s 볼륨 íƒˆì°©ì— ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "%(instance_name)s ì¸ìŠ¤í„´ìŠ¤ì— %(mountpoint)s 마운트지ì ì´ 탈착ë˜ì—ˆìŠµë‹ˆë‹¤"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9966,19 +10035,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10254,235 +10323,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10490,51 +10559,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10716,26 +10785,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10805,7 +10878,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "볼륨 탈착: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10871,70 +10949,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "명령 실행ë„중 예측하지 못한 ì—러가 ë°œìƒí–ˆìŠµë‹ˆë‹¤"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/ko_KR/LC_MESSAGES/nova.po b/nova/locale/ko_KR/LC_MESSAGES/nova.po
index 5b2822065..423155ebe 100644
--- a/nova/locale/ko_KR/LC_MESSAGES/nova.po
+++ b/nova/locale/ko_KR/LC_MESSAGES/nova.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Nova\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2013-05-06 16:05+0000\n"
"Last-Translator: openstackjenkins <jenkins@openstack.org>\n"
"Language-Team: en_US <LL@li.org>\n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "Keypair ë°ì´í„°ê°€ ë§žì§€ 않습니다"
@@ -1433,21 +1433,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1848,7 +1848,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2022,33 +2022,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2120,62 +2120,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2226,7 +2226,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2727,7 +2727,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2831,29 +2831,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2899,53 +2897,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3250,6 +3252,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "주소 릴리즈 %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "주소 릴리즈 %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3418,581 +3430,581 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4050,34 +4062,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4306,7 +4318,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4559,181 +4571,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4952,16 +4964,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4973,17 +4985,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5000,34 +5012,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5163,31 +5201,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5195,12 +5233,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5335,20 +5373,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5356,98 +5394,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5517,44 +5555,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5742,17 +5780,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6669,17 +6707,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6714,16 +6752,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6733,22 +6771,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7628,7 +7666,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7721,12 +7759,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7781,62 +7819,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7973,12 +8018,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8036,58 +8081,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8136,7 +8181,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8170,235 +8215,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8406,49 +8451,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8456,50 +8525,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8509,67 +8578,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8602,11 +8671,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8945,103 +9014,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9255,29 +9324,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9794,12 +9863,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9808,24 +9877,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9934,19 +10003,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10222,235 +10291,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10458,51 +10527,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10683,26 +10752,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10772,7 +10845,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
diff --git a/nova/locale/nb/LC_MESSAGES/nova.po b/nova/locale/nb/LC_MESSAGES/nova.po
index a95162d4a..d75e603d6 100644
--- a/nova/locale/nb/LC_MESSAGES/nova.po
+++ b/nova/locale/nb/LC_MESSAGES/nova.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Nova\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-09-13 10:30+0000\n"
"Last-Translator: openstackjenkins <jenkins@openstack.org>\n"
"Language-Team: nb <LL@li.org>\n"
@@ -170,7 +170,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1434,21 +1434,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Resultat var %s"
@@ -1849,7 +1849,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2024,33 +2024,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Kunne ikke hente metadata for ip:% s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2122,62 +2122,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "Laster utvidelse %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "Kunne ikke laste utvidelse %(ext_factory)s: %(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr "Kunne ikke laste utvidelse %(classpath)s: %(exc)s"
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "Kunne ikke laste utvidelse %(ext_name)s: %(exc)s"
@@ -2228,7 +2228,7 @@ msgstr "Ingen slik handling: %s"
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2730,7 +2730,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2835,29 +2835,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Metadata element ble ikke funnet"
@@ -2904,53 +2902,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "Adresse ikke spesifisert"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3258,6 +3260,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Frigjør adresse %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Frigjør adresse %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3426,583 +3438,583 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "Tildel adresse"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Nettverk ikke funnet"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Tjeneste %(service_id)s ble ikke funnet."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Tjeneste %(service_id)s ble ikke funnet."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4060,34 +4072,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4316,7 +4328,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4569,181 +4581,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr "Nettverk ikke funnet"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Kunne ikke hente metadata for ip:% s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4962,16 +4974,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4983,17 +4995,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5010,34 +5022,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5173,31 +5211,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5205,12 +5243,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5345,20 +5383,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5366,98 +5404,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5529,44 +5567,44 @@ msgstr "Nettverk ikke funnet"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5754,17 +5792,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r feilet. Prøver på nytt."
@@ -6684,17 +6722,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6729,16 +6767,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6748,22 +6786,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7645,7 +7683,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7738,12 +7776,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "Tjener ikke funnet"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7798,62 +7836,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7990,12 +8035,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8053,58 +8098,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Kunne ikke hente metadata for ip:% s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8153,7 +8198,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8187,237 +8232,237 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Ingen nettverk definert."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Ingen nettverk definert."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8425,49 +8470,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8475,50 +8544,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8528,67 +8597,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8621,11 +8690,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8964,103 +9033,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9274,29 +9343,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9814,12 +9883,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Kan ikke finne adressen %r"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9829,24 +9898,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr "Kan ikke finne adressen %r"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9955,19 +10024,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10244,235 +10313,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10480,51 +10549,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10705,27 +10774,31 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "Feil nettverks-format"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10795,7 +10868,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10861,70 +10939,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Uventet feil under kjøring av kommandoen."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Kommando: %(cmd)s\n"
-#~ "Avslutnings-status: %(exit_code)s\n"
-#~ "Standard ut: %(stdout)r\n"
-#~ "Standardfeil: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Nettverk %(network_id)s ble ikke funnet."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/nova.pot b/nova/locale/nova.pot
index de0320d0c..0879981bc 100644
--- a/nova/locale/nova.pot
+++ b/nova/locale/nova.pot
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: nova jenkins.nova.propose.translation.update.239\n"
+"Project-Id-Version: nova jenkins.nova.propose.translation.update.246\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1432,21 +1432,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1847,7 +1847,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2021,33 +2021,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2119,62 +2119,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2225,7 +2225,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2726,7 +2726,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2830,29 +2830,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2898,53 +2896,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3249,6 +3251,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3417,581 +3429,581 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4049,34 +4061,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4305,7 +4317,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4558,181 +4570,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4951,16 +4963,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4972,17 +4984,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -4999,34 +5011,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5162,31 +5200,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5194,12 +5232,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5334,20 +5372,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5355,98 +5393,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5516,44 +5554,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5741,17 +5779,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6668,17 +6706,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6713,16 +6751,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6732,22 +6770,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7627,7 +7665,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7720,12 +7758,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7780,62 +7818,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7972,12 +8017,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8035,58 +8080,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8135,7 +8180,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8169,235 +8214,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8405,49 +8450,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8455,50 +8524,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8508,67 +8577,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8601,11 +8670,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8944,103 +9013,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9254,29 +9323,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9793,12 +9862,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9807,24 +9876,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9933,19 +10002,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10221,235 +10290,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10457,51 +10526,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10682,26 +10751,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10771,7 +10844,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
diff --git a/nova/locale/pt_BR/LC_MESSAGES/nova.po b/nova/locale/pt_BR/LC_MESSAGES/nova.po
index 32da7f70a..463375c36 100644
--- a/nova/locale/pt_BR/LC_MESSAGES/nova.po
+++ b/nova/locale/pt_BR/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-05-04 19:25+0000\n"
"Last-Translator: Júlio Cezar Santos Pires <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1440,21 +1440,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Executando o comando (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "Ambiente não suportado por SSH"
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Resultado foi %s"
@@ -1858,7 +1858,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Desatribuir endereço %s"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2035,33 +2035,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "Falha ao obter metadados para o ip: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Capturado o erro: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2133,62 +2133,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2239,7 +2239,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "Corpo do pedido está mal formado"
@@ -2748,7 +2748,7 @@ msgstr "atributo não suportado: %s"
msgid "Detach interface %s"
msgstr "Iniciando a VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2854,29 +2854,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Certificado %(certificate_id)s não encontrado."
@@ -2925,54 +2923,58 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "group %s já existe"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "Endereço não especificado"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "Removendo rede com id %s"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "Volume não encontrada para a instância %(instance_id)s."
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3286,6 +3288,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "Liberar endereço %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "Liberar endereço %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3455,598 +3467,598 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "recebido %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Capturado o erro: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "instância %s: reset da rede"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "Alocar endereço"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "group %s já existe"
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Nenhuma rede definida."
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "%(req)s é necessário para criar a rede."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Reiniciar instância %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Serviço %(service_id)s não encontrado."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Serviço %(service_id)s não encontrado."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "Erro inexperado lançado: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "Instância não existe"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, fuzzy, python-format
msgid "%s created"
msgstr "_criar: %s"
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Capturado o erro: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "Capturado o erro: %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Não é possível anexar o volume na instância %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "A instância %(instance_id)s não está executando."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Falhou ao reiniciar instância"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Começando a terminar instâncias"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Criar Grupo de Segurança %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Não é possível destruir o VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Revogado entrada do grupo de segurança %s"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Excluir grupo de segurança %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Autorizada entrada do grupo de segurança %s"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "Revogado entrada do grupo de segurança %s"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4105,34 +4117,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4365,7 +4377,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4631,183 +4643,183 @@ msgstr "Rede %(network_id)s não foi encontrada."
msgid "Host %(host)s not found"
msgstr "Host %(host)s não encontrado."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Falha ao obter metadados para o ip: %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "A instância %(instance_id)s não está executando."
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Remover volume com id: %s"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "Instância %s não encontrada"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Removendo imagem %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5029,16 +5041,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Falhou ao reiniciar instância"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -5050,17 +5062,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "Corpo do pedido está mal formado"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5077,34 +5089,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5241,31 +5279,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Volume não encontrada para a instância %(instance_id)s."
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Volume não encontrada para a instância %(instance_id)s."
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "Volume não encontrada para a instância %(instance_id)s."
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5273,12 +5311,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5413,20 +5451,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5434,98 +5472,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr "Rede já existe!"
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5597,44 +5635,44 @@ msgstr "Imagem não encontrada."
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "Removendo rede com id %s"
@@ -5825,17 +5863,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Executando comando (subprocesso): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r falhou. Tentando novamente."
@@ -6759,17 +6797,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6804,16 +6842,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr "Endereço |%(address)s| não está alocado"
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6823,22 +6861,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr "Endereço |%(address)s| não está alocado"
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7729,7 +7767,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7823,12 +7861,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "Imagem não encontrada."
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7883,62 +7921,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "Removendo rede com id %s"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8078,12 +8123,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Começando a terminar instâncias"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8148,59 +8193,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Falha ao obter metadados para o ip: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Remover volume com id: %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "Removendo rede com id %s"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "Instância não encontrada"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8249,7 +8294,7 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "Obter saída do console para instância %s"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8283,243 +8328,243 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Falhou ao reiniciar instância"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Nenhuma rede definida."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Nenhuma rede definida."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "volume %s: criado com sucesso"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Falhou ao reiniciar instância"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "Usuário não tem privilégios de administrador"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
"Solicitando à xapi para realizar upload da imagem %(vdi_uuids)s com ID "
"%(image_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8527,49 +8572,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Obtendo o tamanho da imagem para a imagem %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8577,50 +8646,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8630,67 +8699,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Falha de Autenticação: %s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8723,11 +8792,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9066,105 +9135,105 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Não é possível localizar o volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "Iniciando a Bridge para %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Não é possível localizar o volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, fuzzy, python-format
msgid "Copying image to the device '%s'"
msgstr "Obtendo o tamanho da imagem para a imagem %s"
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Falhou ao reiniciar instância"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Não é possível desconectar o volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Executando comando (subprocesso): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9378,29 +9447,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr "Sessão inválida"
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9923,12 +9992,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Não é possível localizar o volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Ponto de montagem %(mountpoint)s conectada à instância %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
@@ -9938,24 +10007,24 @@ msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "Não foi possível criar volume"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Ponto de montagem %(mountpoint)s desanexada da instância %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10064,19 +10133,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10360,236 +10429,236 @@ msgstr ""
"Solicitando à xapi para realizar upload da imagem %(vdi_uuids)s com ID "
"%(image_id)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Tamanho da imagem %(image)s:%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Copiando o VDI %s de /boot/guest no dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Kernel/Ramdisk %s destruidos"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "Falhou ao reiniciar instância"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "Verificando o vdi %s para kernel PV"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "O VDI %s continua disponível"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "Re-escaneando SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "O VHD %(vdi_uuid)s tem pai %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "Conectando VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "O VDB %s foi conectado."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Destruindo VBD para o VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "O VBD para o VDI %s foi destruído."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "Rodando pygrub novamente %s"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Kernel Xen encontrado: %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "Kernel Xen não encontrado. Iniciando como HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10597,51 +10666,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10824,26 +10893,30 @@ msgstr "Criando a VIF para VM %(vm_ref)s, rede %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10914,7 +10987,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Detach_volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "A instância %(instance_id)s não está executando."
@@ -10980,70 +11058,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Erro inesperado ao executar o comando."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Comando: %(cmd)s\n"
-#~ "Código de saída: %(exit_code)s\n"
-#~ "Saída padrão: %(stdout)r\n"
-#~ "Erro: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Falha ao suspender instância"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Falha ao suspender instância"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Iniciando a Bridge para %s"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Iniciando a Bridge para %s"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Rede %(network_id)s não foi encontrada."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/ru/LC_MESSAGES/nova.po b/nova/locale/ru/LC_MESSAGES/nova.po
index 056685261..bb486eb85 100644
--- a/nova/locale/ru/LC_MESSAGES/nova.po
+++ b/nova/locale/ru/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-03-25 09:34+0000\n"
"Last-Translator: Eugene Marshal <Unknown>\n"
"Language-Team: Russian <ru@li.org>\n"
@@ -176,7 +176,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1468,21 +1468,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Выполнение команды (SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "Среда не поддерживаетÑÑ Ñ Ð¸Ñпользованием SSH"
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr "process_input не поддерживаетÑÑ Ñ Ð¸Ñпользованием SSH"
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Результат %s"
@@ -1895,7 +1895,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "Ðевозможно найти Ð°Ð´Ñ€ÐµÑ %r"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2076,26 +2076,26 @@ msgstr "ÐедопуÑтимый запроÑ: %s"
msgid "Failed to get metadata for instance id: %s"
msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ ip: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Обнаружена ошибка: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr "%(url)s возвратил Ñ HTTP %(status)d"
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr "РаÑширенный реÑурÑ: %s"
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
@@ -2104,7 +2104,7 @@ msgstr ""
"РаÑширение %(ext_name)s: Ðевозможно раÑширить реÑÑƒÑ€Ñ %(collection)s: Ðет "
"такого реÑурÑа"
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr "РаÑширение %(ext_name)s раÑширение реÑурÑа: %(collection)s"
@@ -2177,62 +2177,62 @@ msgstr "Отклонение запроÑа Ñнимка, Ñнимки в дан
msgid "Instance snapshots are not permitted at this time."
msgstr "Снимки копии в наÑтоÑщий момент недопуÑтимы."
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr "Загруженное раÑширение: %s"
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "Загрузка раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "Ошибка загрузки раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ %(ext_factory)s: %(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "Ошибка загрузки раÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ %(ext_name)s: %(exc)s"
@@ -2283,7 +2283,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "Ðеправильное тело запроÑа"
@@ -2797,7 +2797,7 @@ msgstr "аттрибут не поддерживаетÑÑ: %s"
msgid "Detach interface %s"
msgstr "ЗапуÑк интерфейÑа VLAN %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2907,29 +2907,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, fuzzy, python-format
msgid "Error in evacuate, %s"
msgstr "Ошибка Ð¿ÐµÑ€ÐµÐ¼ÐµÑ‰ÐµÐ½Ð¸Ñ %s"
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Сертификат %(certificate_id)s не найден."
@@ -2978,48 +2976,52 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr "Тип тома %(name)s уже ÑущеÑтвует."
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "ÐÐ´Ñ€ÐµÑ Ð½Ðµ задан"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "уÑтановка Ñетевого узла"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
@@ -3027,7 +3029,7 @@ msgstr ""
"%(instance_id)s"
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3345,6 +3347,16 @@ msgstr "Создать Ñнимок из тома %s"
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "ПриÑвоить Ð°Ð´Ñ€ÐµÑ %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "ПриÑвоить Ð°Ð´Ñ€ÐµÑ %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3514,382 +3526,382 @@ msgstr "Ñлемент не ÑвлÑетÑÑ Ð¿Ð¾Ñ‚Ð¾Ð¼ÐºÐ¾Ð¼"
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
#, fuzzy
msgid "leasing ip"
msgstr "Создание изображениÑ"
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
#, fuzzy
msgid "releasing ip"
msgstr "Создание изображениÑ"
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "получено %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Ошибка БД: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "ВоÑÑтановление Ñети"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "Выделить адреÑ"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "Тип тома %(name)s уже ÑущеÑтвует."
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr "IPv4"
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr "IPv6"
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr "проект"
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Сеть не найдена"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "%(req)s необходимо Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñети."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "Выполнение оÑтановки копий"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "Служба %(service_id)s не найдена."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "Служба %(service_id)s не найдена."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "ÐÐµÐ¿Ñ€ÐµÐ´Ð²Ð¸Ð´ÐµÐ½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
#, fuzzy
msgid "PROJECT"
msgstr "проект"
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "ÐºÐ¾Ð¿Ð¸Ñ - %s не предÑтавлена"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
#, fuzzy
msgid "Unknown error"
msgstr "Ошибка аутентификации"
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, fuzzy, python-format
msgid "%s created"
msgstr "Таблица |%s| не Ñоздана!"
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Ошибка БД: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "тип = %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr ""
"Превышена квота копий. Ð’Ñ‹ не можете запуÑтить дополнительные копии Ñтого "
"типа."
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr "Превышена квота копий. Ð’Ñ‹ можете запуÑтить только %s копий Ñтого типа."
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, fuzzy, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr "Превышена квота Ð´Ð»Ñ %(pid)s, попытка выполнить %(min_count)s копий"
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
@@ -3898,97 +3910,97 @@ msgstr ""
"Превышена квота Ð´Ð»Ñ %(pid)s, попытка назначить %(num_metadata)s ÑвойÑтв "
"метаданных"
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "Ðевозможно приÑоединить том Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "ВыполнÑет запуÑк %s копий..."
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr "bdm %s"
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr "block_device_mapping %s"
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Выполнение Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ копий"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "Тип копии %(instance_type_id)s не найден."
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Выполнение Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ копий"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, fuzzy, python-format
msgid "instance's host %s is down, deleting from database"
msgstr "ОтÑутÑтвует узел Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %s, немедленное удаление"
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "Выполнение запуÑка копий"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "Будет Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° завершить работу %s"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "Попытка оÑтановить %s"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "Попытка запуÑтить %s"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr "ПоиÑк по: %s"
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "ЗапуÑк Ñнимка Ð´Ð»Ñ Ð’Ðœ %s"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
@@ -3997,62 +4009,62 @@ msgstr ""
"УÑтаревший тип копии %(current_instance_type_name)s, новый тип копии "
"%(new_instance_type_name)s"
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, fuzzy, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr "Превышена квота Ð´Ð»Ñ %(pid)s, попытка выполнить %(min_count)s копий"
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "Будет Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° завершить работу %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr "Группа безопаÑноÑти %s не может быть пуÑтой."
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, fuzzy, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
@@ -4061,65 +4073,65 @@ msgstr ""
"Значение (%s) Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° GroupName недопуÑтимо. Длина превышает "
"макÑимально допуÑтимое значение 255."
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "Создать группу безопаÑноÑти %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr "Группа безопаÑноÑти %s уже ÑущеÑтвует"
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "Ðевозможно ликвидировать vbd %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "Группа безопаÑноÑти (%s) не найдена"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Удалить группу безопаÑноÑти %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr "Правило (%s) не найдено"
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
#, fuzzy
msgid "Quota exceeded, too many security group rules."
msgstr "Добавление правила группы безопаÑноÑти: %r"
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4178,34 +4190,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr "Ошибка БД: %s"
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr "ÐšÐ¾Ð¿Ð¸Ñ Ñ‚Ð¸Ð¿Ð° %s не найдена Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ"
@@ -4443,7 +4455,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr "%s. УÑтановка ÑоÑтоÑÐ½Ð¸Ñ ÐºÐ¾Ð¿Ð¸Ð¸ vm_state на ERROR"
@@ -4716,22 +4728,22 @@ msgstr "Сеть %(network_id)s не найдена."
msgid "Host %(host)s not found"
msgstr "Узел %(host)s не найден."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
#, fuzzy
msgid "_post_live_migration() is started.."
msgstr "Запущено post_live_migration().."
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
@@ -4740,21 +4752,21 @@ msgstr ""
"отÑутÑтвует домен Ñ ÑоответÑтвующим именем.\" Эта ошибка может быть "
"безопаÑно пропущена."
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
#, fuzzy
msgid "Post operation of migration started"
msgstr "Запущено post_live_migration().."
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ ip: %s"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
@@ -4763,64 +4775,64 @@ msgstr ""
"Ðайдены %(migration_count)d неподтверждённых перемещений, Ñтарше "
"%(confirm_window)d Ñекунд"
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, fuzzy, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr "Завершение работы ВМ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %(instance_uuid)s"
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "ÐšÐ¾Ð¿Ð¸Ñ %(instance_id)s не найдена"
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
#, fuzzy
msgid "In ERROR state"
msgstr "Ошибка БД: %s"
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr "Обновление временных данных иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¾ÑÑ‹ пропуÑканиÑ"
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Обновление временных данных иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»Ð¾ÑÑ‹ пропуÑканиÑ"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr "Обновление ÑоÑтоÑÐ½Ð¸Ñ ÑƒÐ·Ð»Ð°"
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
@@ -4829,81 +4841,81 @@ msgstr ""
"Ðайдено %(num_db_instances)s в базе данных и %(num_vm_instances)s в "
"гипервизоре."
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "ÐºÐ¾Ð¿Ð¸Ñ Ð½Ðµ включена"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
#, fuzzy
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr "FLAGS.reclaim_instance_interval <= 0, пропуÑк..."
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "LoggingVolumeDriver: %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, fuzzy, python-format
msgid "No service record for host %s"
msgstr "Ðет Ñлужбы Ð´Ð»Ñ compute ID %s"
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, fuzzy, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5131,16 +5143,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Ошибка перезагрузки копии"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr "ÐераÑпознанное значение read_deleted '%s'"
@@ -5152,17 +5164,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "ÐедопуÑтимый Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñ‚ÐµÐ»Ð°"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5179,34 +5191,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5343,31 +5381,31 @@ msgstr "Превышена квота Ð´Ð»Ñ %s, попытка выделени
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "Ðе найден том Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %(instance_id)s."
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "ПриÑвоить Ð°Ð´Ñ€ÐµÑ %(public_ip)s копии %(instance_id)s"
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "Завершение работы ВМ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %(instance_uuid)s"
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "ПриÑвоить Ð°Ð´Ñ€ÐµÑ %(public_ip)s копии %(instance_id)s"
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5375,12 +5413,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr "Домен |%(domain)s| уже ÑущеÑтвует, изменение зоны на |%(av_zone)s|."
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr "Домен |%(domain)s| уже ÑущеÑтвует, изменение проекта на |%(project)s|."
@@ -5517,22 +5555,22 @@ msgstr ""
msgid "setting network host"
msgstr "уÑтановка Ñетевого узла"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
#, fuzzy
msgid "network allocations"
msgstr "Ñетевые раÑÐ¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %s"
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, fuzzy, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr "иÑключение Ñетевых раÑпределений Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ |%s|"
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
#, fuzzy
msgid "network deallocation for instance"
msgstr "иÑключение Ñетевых раÑпределений Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ |%s|"
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, fuzzy, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5543,79 +5581,79 @@ msgstr ""
"доÑтупной зоне |%(zone)s|. ÐšÐ¾Ð¿Ð¸Ñ |%(instance)s| раÑположена в зоне "
"|%(zone2)s|. ЗапиÑÑŒ DNS не будет Ñоздана."
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, fuzzy, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr "Превышена квота Ð´Ð»Ñ %s, попытка Ð²Ñ‹Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа"
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
#, fuzzy
msgid "Failed to update usages deallocating fixed IP"
msgstr "Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð¼Ð° в базе данных"
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr "Ðрендованный IP |%(address)s|"
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr "ПриÑвоенный IP |%(address)s|"
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr "cidr уже иÑпользуетÑÑ"
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
"Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ cidr (%(cidr)s) конфликтует Ñ ÑущеÑтвующей Ñупер-Ñетью "
"(%(super)s)"
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
@@ -5624,22 +5662,22 @@ msgstr ""
"Ð·Ð°Ð¿Ñ€Ð¾ÑˆÐµÐ½Ð½Ð°Ñ cidr (%(cidr)s) конфликтует Ñ ÑущеÑтвующей, меньшей cidr "
"(%(smaller)s)"
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr "Сеть уже ÑущеÑтвует!"
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr "Сеть должна быть иÑключена из проекта %s перед удалением"
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, fuzzy, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5713,44 +5751,44 @@ msgstr "Узел не найден"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, fuzzy, python-format
msgid "deallocate_for_instance() for %s"
msgstr "иÑключение Ñетевых раÑпределений Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ |%s|"
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, fuzzy, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð¼Ð° в базе данных"
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, fuzzy, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr "Ошибка ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð¼Ð° в базе данных"
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, fuzzy, python-format
msgid "validate_networks() for %s"
msgstr "ÐедопуÑтимый Ñетевой формат"
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "уÑтановка Ñетевого узла"
@@ -5945,17 +5983,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr "Ошибка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°Ð³ÐµÐ½Ñ‚Ð°: %(resp)r"
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr "ПринÑты неизвеÑтные аргументы ключевого Ñлова Ð´Ð»Ñ utils.execute: %r"
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Выполнение команды (ÑубпроцеÑÑ): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r ошибка. ВыполнÑетÑÑ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€."
@@ -6891,18 +6929,18 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
#, fuzzy
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr "Превышена квота Ð´Ð»Ñ %(pid)s, попытка выполнить %(min_count)s копий"
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6937,17 +6975,17 @@ msgstr "ПоÑле принудительного Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñ€Ð°Ð±Ð¾Ñ
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
#, fuzzy
msgid "spawn error"
msgstr "Ошибка аутентификации"
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr "ÐÐ´Ñ€ÐµÑ |%(address)s| не выделен"
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6957,22 +6995,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr "ÐÐ´Ñ€ÐµÑ |%(address)s| не выделен"
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7863,7 +7901,7 @@ msgstr "ВерÑÐ¸Ñ Ð°Ð³ÐµÐ½Ñ‚Ð° копии: %s"
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7963,12 +8001,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "объект не найден"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, fuzzy, python-format
msgid "Duplicate VM name found: %s"
msgstr "Объект Quantum не найден: %s"
@@ -8023,62 +8061,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "уÑтановка Ñетевого узла"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8218,12 +8263,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "Перечень копий"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "Ðевозможно найти конфигурацию по адреÑу %(path)s"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "Ðевозможно найти конфигурацию по адреÑу %(path)s"
@@ -8288,59 +8333,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "Ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ… Ð´Ð»Ñ ip: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Удалить том Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼: %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "уÑтановка Ñетевого узла"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "Сервер не найден"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8389,7 +8434,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr "Создание Ñнимка копии ВМ %s "
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8423,241 +8468,241 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr "Ошибка поиÑка vbd Ð´Ð»Ñ vdi %s"
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "Подключение к libvirt: %s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "том группы %s не ÑущеÑтвует"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "Ðеполадка Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸ÐµÐ¼ к libvirt"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "Подключение к libvirt: %s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Выполнение оÑтановки копий"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, fuzzy, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr "Ошибка schedule_%(method)s: %(ex)s"
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Сети не определены."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Сети не определены."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "Ñнимок %s: Ñоздание завершено"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "Ошибка перезагрузки копии"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "Пользователь не имеет админиÑтративных привилегий"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr "Создание изображениÑ"
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ xapi на приём образа vhd %(image)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8665,12 +8710,12 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
@@ -8679,7 +8724,27 @@ msgstr ""
"Ошибка libvirt во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка %(instance_name)s: [Код ошибки "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
#, fuzzy
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
@@ -8688,31 +8753,35 @@ msgstr ""
"Ðевозможно получить количеÑтво ЦПУ, так как Ñта возможноÑть не "
"реализована Ð´Ð»Ñ Ñтой платформы. Эту ошибку можно безопаÑно пропуÑтить."
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr "уÑÑ‚Ð°Ñ€ÐµÐ²ÑˆÐ°Ñ Ð²ÐµÑ€ÑÐ¸Ñ libvirt (не поддерживаетÑÑ getVersion)"
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "Получение размера образа Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8720,21 +8789,21 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, fuzzy, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
@@ -8743,29 +8812,29 @@ msgstr ""
"Создание временного файла %s Ð´Ð»Ñ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… узлов Ñети compute о "
"необходимоÑти приÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð³Ð¾ же хранилища."
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8775,7 +8844,7 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
@@ -8784,22 +8853,22 @@ msgstr ""
"Создание временного файла %s Ð´Ð»Ñ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… узлов Ñети compute о "
"необходимоÑти приÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ‚Ð¾Ð³Ð¾ же хранилища."
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "Ошибка аутентификации: %s"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, fuzzy, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr "plug_vifs() ошибка %(cnt)d.До %(max_retry)d попыток Ð´Ð»Ñ %(hostname)s."
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, fuzzy, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
@@ -8808,39 +8877,39 @@ msgstr ""
"Ошибка libvirt во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка %(instance_name)s: [Код ошибки "
"%(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
#, fuzzy
msgid "Instance running successfully."
msgstr "ÐšÐ¾Ð¿Ð¸Ñ %s: выполнение"
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8875,11 +8944,11 @@ msgstr "nwfilter(%(instance_filter_name)s) длÑ%(name)s не найден."
msgid "iptables firewall: Setup Basic Filtering"
msgstr "БрандмауÑÑ€ iptables: ÐаÑтройка базовой фильтрации"
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, fuzzy, python-format
msgid "Unknown image_type=%s"
msgstr "неизвеÑтный обработчик образа диÑка: %s"
@@ -9226,105 +9295,105 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "Ðевозможно найти том %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "ЗапуÑк моÑта интерфейÑа Ð´Ð»Ñ %s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, fuzzy, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr "Выгрузка образа %s"
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "Ñоздание sr в volume_utils"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, fuzzy, python-format
msgid "Copying image to the device '%s'"
msgstr "Получение размера образа Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° %s"
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "Ошибка перезагрузки копии"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "Ðевозможно иÑпользовать глобальные Ð¿Ð¾Ð»Ð½Ð¾Ð¼Ð¾Ñ‡Ð¸Ñ %(role_id)s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Выполнение команды (ÑубпроцеÑÑ): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "Сбой ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ c melange"
@@ -9543,29 +9612,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr "СвойÑтво %(attr)s не назначено Ð´Ð»Ñ ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñемого объекта %(objName)s"
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr "ОтÑутÑтвуют зарегиÑтрированные ВМ"
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr "Завершение ÑеанÑа Ñ Ð½ÐµÐ¿Ð¾Ð»Ð°Ð´ÐºÐ°Ð¼Ð¸ или уже завершённого ÑеанÑа: %s"
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr "Ð¡ÐµÐ°Ð½Ñ Ð¸Ð¼ÐµÐµÑ‚ неполадки"
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr "ÐедопуÑтимый ÑеанÑ"
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
#, fuzzy
msgid "No Virtual Machine has been registered yet"
msgstr " ОтÑутÑтвуют зарегиÑтриованные виртуальные машины"
@@ -10109,12 +10178,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "Ðевозможно найти Ð°Ð´Ñ€ÐµÑ %r"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "Точка Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ %(mountpoint)s приÑоединена к копии %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -10124,19 +10193,19 @@ msgstr ""
msgid "Unable to find volume"
msgstr "Ошибка поиÑка тома в базе данных"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "Точка Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ %(mountpoint)s отÑоединена от копии %(instance_name)s"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, fuzzy, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
"ВРЕМЯ ПРОСТОЯ: Срок вызова %(method)s иÑтёк. VM id=%(instance_uuid)s; "
"args=%(args)r"
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, fuzzy, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
@@ -10145,7 +10214,7 @@ msgstr ""
"ÐЕ РЕÐЛИЗОВÐÐО: Вызов %(method)s не поддерживаетÑÑ Ð°Ð³ÐµÐ½Ñ‚Ð¾Ð¼. VM "
"id=%(instance_uuid)s; args=%(args)r"
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, fuzzy, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr "Вызов %(method)s возвратил ошибку: %(e)s."
@@ -10260,21 +10329,21 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "Ошибка Ð´ÐµÑˆÐ¸Ñ„Ñ€Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð»Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ ключа: %s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr "ЗапуÑк узла на XenServer не поддерживаетÑÑ."
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
"Ðевозможно выполнить вход в XenAPI (недоÑтаточно Ñвободного меÑта на "
"Dom0?)"
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "ИÑключение: %s"
@@ -10560,17 +10629,17 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "Ð—Ð°Ð¿Ñ€Ð¾Ñ xapi на приём образа vhd %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
@@ -10579,17 +10648,17 @@ msgstr ""
"Размер образа %(size_bytes)d превышает допуÑтимый instance_type размер "
"%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "Получение образа %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "Ядро не найдено Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° %(image_id)s."
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
@@ -10598,204 +10667,204 @@ msgstr ""
"Превышен размер Ñдра/Ramdisk образа: %(vdi_size)d байт, макÑ. "
"%(max_size)d байт"
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "Копирование VDI %s в /boot/guest на dom0"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "Ядро/Ramdisk VDI %s ликвидирован"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "Ошибка перезагрузки копии"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr "Обнаружен %(image_type_str)s формат Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð·Ð° %(image_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "ПоиÑк vdi %s Ð´Ð»Ñ Ñдра PV"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr "ÐеизвеÑтный формат образа %(disk_image_type)s"
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s до Ñих пор доÑтупен"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "ÐŸÐ¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° SR %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr "Ðевозможно найти SR типа Ñодержимого ISO"
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr "ISO: поиÑк SR %(sr_rec)s"
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr "ISO: не Ñодержимое iso типа"
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr "ISO: SR Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð¹ PBD"
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr "Ð’Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¸ Ñоздании уÑтройÑтва %s"
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "ПодÑоединение VBD %s ... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "ПодÑоединение VBD %s выполнено."
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr "VBD %(vbd_ref)s подÑоединено как %(orig_dev)s"
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
"VBD %(vbd_ref)s подÑоединено в неправильный dev, изменение Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð½Ð° "
"%(dev)s"
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "Ликвидирование VBD Ð´Ð»Ñ VDI %s ... "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "Ликвидирование VBD Ð´Ð»Ñ VDI %s завершено."
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "Ðайдено Ñдро Xen %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "Ядро Xen не найдено. Загрузка HVM."
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10803,16 +10872,16 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr "Разделы:"
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr " %(num)s: %(ptype)s %(size)d Ñекторов"
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
@@ -10821,37 +10890,37 @@ msgstr ""
"ЗапиÑÑŒ таблицы разделов %(primary_first)d %(primary_last)d в "
"%(dev_path)s..."
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "ЗапиÑÑŒ таблицы разделов %s выполнена."
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
"Ошибка приÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð¹ ÑиÑтемы (ожидаемо Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¹ не на базе "
"linux): %s"
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -11050,27 +11119,31 @@ msgstr "Создание VIF Ð´Ð»Ñ Ð’Ðœ %(vm_ref)s, Ñеть %(network_ref)s."
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "ÐедопуÑтимый Ñетевой формат"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
#, fuzzy
msgid "Migrate Send failed"
msgstr "Ошибка ÑозданиÑ"
@@ -11143,7 +11216,12 @@ msgstr "Ðевозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð
msgid "Unable to obtain target information %(connection_data)s"
msgstr "Ðевозможно получить ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ %(data)s, %(mountpoint)s"
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Подключить том %(volume_id)s Ð´Ð»Ñ ÐºÐ¾Ð¿Ð¸Ð¸ %(instance_id)s на %(device)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "ÐšÐ¾Ð¿Ð¸Ñ %(instance_id)s не найдена."
@@ -11211,70 +11289,3 @@ msgstr "Образ должен быть доÑтупен"
msgid "status must be 'available'"
msgstr "Образ должен быть доÑтупен"
-#~ msgid "Unexpected error while running command."
-#~ msgstr "ÐÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° при выполнении команды."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "Команда: %(cmd)s\n"
-#~ "Код выхода: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "Ошибка запуÑка xvp: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "Ошибка отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ vif копии '%s'"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "Ошибка отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ vif копии '%s'"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "Ошибка отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ vif копии '%s'"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "Ошибка отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ vif копии '%s'"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr "Ошибка отÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ vif копии '%s'"
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "Сеть %(network_id)s не найдена."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr "Ðеобходимо задать vmwareapi_wsdl_loc"
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr "Ðевозможно принÑть SR Ð´Ð»Ñ Ñтого узла: %s"
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/tl/LC_MESSAGES/nova.po b/nova/locale/tl/LC_MESSAGES/nova.po
index 96467f6ec..2d1a80fc1 100644
--- a/nova/locale/tl/LC_MESSAGES/nova.po
+++ b/nova/locale/tl/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-08-23 11:21+0000\n"
"Last-Translator: Thierry Carrez <thierry.carrez+lp@gmail.com>\n"
"Language-Team: Tagalog <tl@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1432,21 +1432,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1847,7 +1847,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2021,33 +2021,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2119,62 +2119,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2225,7 +2225,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2726,7 +2726,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2830,29 +2830,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2898,53 +2896,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3249,6 +3251,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3417,582 +3429,582 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "natanggap %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4050,34 +4062,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4306,7 +4318,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4559,181 +4571,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4952,16 +4964,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4973,17 +4985,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5000,34 +5012,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5163,31 +5201,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5195,12 +5233,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5335,20 +5373,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5356,98 +5394,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5517,44 +5555,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5742,17 +5780,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6669,17 +6707,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6714,16 +6752,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6733,22 +6771,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7628,7 +7666,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7721,12 +7759,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7781,62 +7819,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7973,12 +8018,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8036,58 +8081,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8136,7 +8181,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8170,235 +8215,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8406,49 +8451,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8456,50 +8525,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8509,67 +8578,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8602,11 +8671,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8945,103 +9014,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9255,29 +9324,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9794,12 +9863,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9808,24 +9877,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9934,19 +10003,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10222,235 +10291,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "walang paraan para sa mensahe: %s"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10458,51 +10527,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10683,26 +10752,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10772,7 +10845,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10838,65 +10916,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Merong hindi-inaasahang pagkakamali habang tumatakbo ang command."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/tr/LC_MESSAGES/nova.po b/nova/locale/tr/LC_MESSAGES/nova.po
index ac91f09f7..f68449818 100644
--- a/nova/locale/tr/LC_MESSAGES/nova.po
+++ b/nova/locale/tr/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-12-14 18:10+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Turkish <tr@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1432,21 +1432,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1847,7 +1847,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2021,33 +2021,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2119,62 +2119,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2225,7 +2225,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2726,7 +2726,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2830,29 +2830,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2898,53 +2896,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3249,6 +3251,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3417,581 +3429,581 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4049,34 +4061,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4305,7 +4317,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4558,181 +4570,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4951,16 +4963,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4972,17 +4984,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -4999,34 +5011,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5162,31 +5200,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5194,12 +5232,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5334,20 +5372,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5355,98 +5393,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5516,44 +5554,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5741,17 +5779,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6668,17 +6706,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6713,16 +6751,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6732,22 +6770,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7627,7 +7665,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7720,12 +7758,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7780,62 +7818,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7972,12 +8017,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8035,58 +8080,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8135,7 +8180,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8169,235 +8214,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8405,49 +8450,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8455,50 +8524,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8508,67 +8577,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8601,11 +8670,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8944,103 +9013,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9254,29 +9323,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9793,12 +9862,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9807,24 +9876,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9933,19 +10002,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10221,235 +10290,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10457,51 +10526,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10682,26 +10751,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10771,7 +10844,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10837,65 +10915,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr ""
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/tr_TR/LC_MESSAGES/nova.po b/nova/locale/tr_TR/LC_MESSAGES/nova.po
index a2c165c31..0096cf357 100644
--- a/nova/locale/tr_TR/LC_MESSAGES/nova.po
+++ b/nova/locale/tr_TR/LC_MESSAGES/nova.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Nova\n"
"Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2013-02-02 18:03+0000\n"
"Last-Translator: openstackjenkins <jenkins@openstack.org>\n"
"Language-Team: en_US <LL@li.org>\n"
@@ -170,7 +170,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "Anahtar çifti verisi geçersiz"
@@ -1464,21 +1464,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "Çalışan komut(SSH): %s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "SSH üzerinde ortam desteklenmemektedir."
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr "SSH üzerinde process_input desteklenmemektedir."
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "Sonuç %s"
@@ -1882,7 +1882,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2057,26 +2057,26 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "IP için metadata alma hata ile sonuçlandı: %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "Yakalama hatası: %s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr "%(url)s HTTP %(status)d ile geri döndü"
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr "UzantıYöneticisi sınıfı belirlenmek zorunda"
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr "GeniÅŸletilmiÅŸ kaynak: %s"
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
@@ -2085,7 +2085,7 @@ msgstr ""
"%(ext_name)s uzantısı: %(collection)s kaynağı genişletilemiyor: Böyle bir"
" kaynak yok"
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr "%(ext_name)s uzantısı kaynağı genişletiyor: %(collection)s"
@@ -2157,62 +2157,62 @@ msgstr "Sistem görüntüsü isteği reddedildi, sistem görüntüleri şu anda
msgid "Instance snapshots are not permitted at this time."
msgstr "Örnek sistem görüntüleri şu an onaylanmadı."
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr "Yüklenen bölüm: %s"
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr "Ext adı: %s"
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr "Ext takma adı: %s"
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr "Ext açıklaması: %s"
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr "Ext isim uzayı: %s"
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr "Ext güncellendi: %s"
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr "İstisna yükleme uzantısı: %s"
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "Genişletme yükleniyor: %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr "Genişletme fabrikası çağırılıyor %s"
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "%(ext_factory)s uzantısı yüklemede hata: %(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr "%(classpath)s uzantısı yüklemede hata: %(exc)s"
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "%(ext_name)s uzantısı yüklemede hata: %(exc)s"
@@ -2263,7 +2263,7 @@ msgstr "Böyle bir işlem yok: %s"
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "Kusurlu istek gövdesi"
@@ -2777,7 +2777,7 @@ msgstr "Özellik desteklenmiyor: %s"
msgid "Detach interface %s"
msgstr "%s VLAN arayüzü başlatılıyor "
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2887,30 +2887,28 @@ msgstr "Kümeler %s işlemine sahip değil"
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr "%s 'MANUAL' veya 'AUTO' olmak zorunda"
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
#, fuzzy
msgid "host and onSharedStorage must be specified."
msgstr "Sunucu ve blok_göçü tanımlanmak zorunda."
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, fuzzy, python-format
msgid "Error in evacuate, %s"
msgstr "Göçte hata %s"
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "Kural (%s) bulunamadı"
@@ -2957,53 +2955,58 @@ msgstr "Daha fazla deÄŸiÅŸken IP mevcut deÄŸil"
msgid "Floating ip %s has been disassociated"
msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirildi."
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr "Parametre dizini eksik"
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "Adres belirtilmedi"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr "Örnekle değişken IP ilişkilendirilmedi"
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+#, fuzzy
+msgid "Specified fixed address not assigned to instance"
+msgstr "Örnekle değişken IP ilişkilendirilmedi"
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "%(address)s deÄŸiÅŸken IP adresi iliÅŸkilendirilemedi."
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3316,6 +3319,16 @@ msgstr "%s biriminden sistem görüntüsü oluşturuluyor"
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "%s adresini serbest bırak"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "%s adresini serbest bırak"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3484,469 +3497,469 @@ msgstr "eleman çocuk değil"
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "Veritabanı hatası: %s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "Başlangıç adresi"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
#, fuzzy
msgid "No fixed IP found."
msgstr "Hiç dinamik IP bulunamadı."
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, fuzzy, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr "Örnekle değişken IP ilişkilendirilmedi"
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr "id"
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr "IPv4"
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr "IPv6"
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "Başlangıç adresi"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr "DNS1"
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr "DNS2"
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr "VlanID"
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr "proje"
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr "uuid"
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "Ağ bulunamadı"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "AÄŸ oluÅŸturulurken %(req)s gereklidir."
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "%r örneğini tekrar yükle"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "%(service_id)s servisi bulunamadı."
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "%(service_id)s servisi bulunamadı."
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "BeklenmeyenHata: %s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
#, fuzzy
msgid "PROJECT"
msgstr "proje"
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
#, fuzzy
msgid "Must supply valid parameters to create instance_type"
msgstr "Örnek tür oluşturulamıyor."
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "Örnek mevcut değil"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
#, fuzzy
msgid "Unknown error"
msgstr "Kimlik doğrulama hatası"
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
#, fuzzy
msgid "Valid instance type name is required"
msgstr "%s geçerli bir örnek ismidir"
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "Veritabanı hatası: %s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "Veritabanı hatası: %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "Örnekleri sonlandırma işlemi başlatılıyor"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "%(instance_type_id)s örnek türü bulunamadı"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "Örnekleri sonlandırma işlemi başlatılıyor"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
@@ -3955,125 +3968,125 @@ msgstr ""
"Eski örnek türü %(current_instance_type_name)s, yeni örnek türü "
"%(new_instance_type_name)s"
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr "Anahtar çifti adı 1-255 karakter arası uzunluğunda olmak zorunda"
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr "%s güvenlik grubu string veya unicode değil"
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr "%s güvenlik grubu boş bırakılamaz."
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr "%s güvenlik grubu 255 karakterden fazla olmamalıdır."
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "%s güvenlik grubunu oluşturunuz"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr "%s güvenlik grubu zaten var"
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "%s güvenlik grubunu siliniz"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr "Kural (%s) bulunamadı"
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "Yetkilendirilmiş %s güvenlik grubu girişi"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "%s güvenlik grubu girişini iptal et"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr "Güvenlik grup id'si integer olmak zorunda"
@@ -4131,34 +4144,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, fuzzy, python-format
msgid "'%s' argument must be a positive integer"
msgstr "Göreli konum parametresi tam sayı olmak zorunda"
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr "Veritabanı hatası: %s"
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr "Silme işlemi için %s örnek türü bulunamadı"
@@ -4395,7 +4408,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4651,103 +4664,103 @@ msgstr "%(volume_id)s bölümü hiçbir şeyle ilişkilendirilmedi"
msgid "Host %(host)s not found"
msgstr "%(host)s sunucusu bulunamadı."
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr "Güncel göç işlemi %(dest)s'da bir hata ile karşılaştı"
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr "%(dest)s'a örnek göçü işlemi başarıyla tamamlandı."
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "Tekrar yükleme örneğinde hata oluştu."
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr "Bant genişliği kullanım önbelleği güncelleniyor"
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Bant genişliği kullanım önbelleği güncelleniyor"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr "Sunucu durumu güncelleniyor"
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
@@ -4756,79 +4769,79 @@ msgstr ""
"Veritabanında %(num_db_instances)s ve misafir sistemde "
"%(num_vm_instances)s bulundu"
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr "Silinen örnek kurtarılıyor"
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "İmaj siliniyor %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -5051,16 +5064,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "Tekrar yükleme örneğinde hata oluştu."
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr "Tanınmayan silinmiş okuma değeri '%s'"
@@ -5072,17 +5085,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "%s geçerli bir örnek ismidir"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5099,34 +5112,60 @@ msgstr "Sürüm tam sayı olmak zorunda"
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5263,31 +5302,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5295,12 +5334,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5435,20 +5474,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5456,98 +5495,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5619,44 +5658,44 @@ msgstr "Öğe bulunamadı"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5851,17 +5890,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr "utils.execute için bilinmeyen anahtar kelime argümanları: %r"
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "Çalışan komut(alt süreç): %s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r hatalı. Yeniden deneniyor."
@@ -6783,17 +6822,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6828,17 +6867,17 @@ msgstr "Zorla öldürülen örneklerin ardından: %s"
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
#, fuzzy
msgid "spawn error"
msgstr "Kimlik doğrulama hatası"
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6848,22 +6887,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7751,7 +7790,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7844,12 +7883,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "Öğe bulunamadı"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7904,62 +7943,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, fuzzy, python-format
msgid "Cannot find boot VHD file: %s"
msgstr "Bilinmeyen temel dosya: %s"
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8098,12 +8144,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "|%s| örneği için değişken IP tahsisi"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8162,58 +8208,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "IP için metadata alma hata ile sonuçlandı: %s"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Blok cihazı haritalandırması kapatılıyor %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8262,7 +8308,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8296,238 +8342,238 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "Örnekler durdurulacak"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "Tanımlı bir ağ yok."
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "Tanımlı bir ağ yok."
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8535,49 +8581,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8585,21 +8655,21 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, fuzzy, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
@@ -8608,29 +8678,29 @@ msgstr ""
"Diğer hesaplama düğümlerini haberdar etmek için %s geçici dosyası "
"oluşturuluyor. Düğümler aynı belleğe bağlanmalıdır."
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr "Blok göçü paylaşılan hafıza ile kullanılamaz."
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8645,7 +8715,7 @@ msgstr ""
" \n"
" Bkz: %(u)s"
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
@@ -8654,62 +8724,62 @@ msgstr ""
"Diğer hesaplama düğümlerini haberdar etmek için %s geçici dosyası "
"oluşturuluyor. Düğümler aynı belleğe bağlanmalıdır."
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, fuzzy, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
"plug_vifs() %(cnt)d kez başarısız oldu. %(hostname)s için %(max_retry)d "
"denemeye kadar tekrar deneniyor."
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr "Birim gibi göründüğünden beri %(path)s atlanıyor"
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8742,11 +8812,11 @@ msgstr "%(name)s için (%(instance_filter_name)s) ağ filtresi bulunamadı."
msgid "iptables firewall: Setup Basic Filtering"
msgstr "iptabloları güvenlik duvarı: Temel Filtreleme Kurulumu"
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -9088,103 +9158,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "Çalışan komut(alt süreç): %s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9398,29 +9468,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9938,12 +10008,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "%r adresini bulmak olanaksız"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9953,24 +10023,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr "Geçersiz bölüm"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -10079,19 +10149,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10367,235 +10437,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10603,51 +10673,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10829,27 +10899,31 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "Hatalı ağ biçimi"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10920,7 +10994,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "%(device)s'daki %(instance_id)s örneğine %(volume_id)s birimini bağla"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10988,68 +11067,3 @@ msgstr "İmaj müsait olmak zorunda"
msgid "status must be 'available'"
msgstr "İmaj müsait olmak zorunda"
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Komut çalışırken beklenmeyen bir hata oluştu."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s⎠Komut: %(cmd)s⎠Çıkış kodu:"
-#~ " %(exit_code)s⎠Standart çıktı: %(stdout)r⎠"
-#~ "Standart hata: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "XVP başlatılırken hata oluştu: %s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "%(network_id)s ağı bulunamadı."
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/uk/LC_MESSAGES/nova.po b/nova/locale/uk/LC_MESSAGES/nova.po
index cd52161f7..dcaa62149 100644
--- a/nova/locale/uk/LC_MESSAGES/nova.po
+++ b/nova/locale/uk/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2011-08-23 11:21+0000\n"
"Last-Translator: Thierry Carrez <thierry.carrez+lp@gmail.com>\n"
"Language-Team: Ukrainian <uk@li.org>\n"
@@ -169,7 +169,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr ""
@@ -1433,21 +1433,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1850,7 +1850,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2024,33 +2024,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2122,62 +2122,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2228,7 +2228,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2729,7 +2729,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2833,29 +2833,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2901,53 +2899,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3253,6 +3255,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3421,582 +3433,582 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "отримано %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
msgid "Cannot attach one or more volumes to multiple instances"
msgstr ""
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
msgid "instance termination disabled"
msgstr ""
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, python-format
msgid "Unable to delete system group '%s'"
msgstr ""
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "Вилучити групу безпеки %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4054,34 +4066,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4310,7 +4322,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4563,182 +4575,182 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "Від'єднати том %s"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "Від'єднати том %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4957,16 +4969,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4978,17 +4990,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5005,34 +5017,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5168,31 +5206,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5200,12 +5238,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5340,20 +5378,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5361,98 +5399,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5522,44 +5560,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5748,17 +5786,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6675,17 +6713,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6720,16 +6758,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6739,22 +6777,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7634,7 +7672,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7727,12 +7765,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7787,62 +7825,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, python-format
msgid "Getting info for disk: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7979,12 +8024,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8042,58 +8087,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "Від'єднати том %s"
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8142,7 +8187,7 @@ msgstr ""
msgid "Detaching physical disk from instance: %s"
msgstr ""
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8176,235 +8221,235 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, python-format
msgid "Connection to libvirt failed: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
msgid "Guest does not have a console available"
msgstr ""
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8412,49 +8457,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, python-format
msgid "Trying to get stats for the volume %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8462,50 +8531,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8515,67 +8584,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8608,11 +8677,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8951,103 +9020,103 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, python-format
msgid "Removing the logical volume '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, python-format
msgid "Creating logical volume of size %s bytes"
msgstr ""
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
msgid "Unable to get checksum"
msgstr ""
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
msgid "File transfer from PowerVM manager failed"
msgstr ""
@@ -9261,29 +9330,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9800,12 +9869,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr ""
@@ -9814,24 +9883,24 @@ msgstr ""
msgid "Unable to find volume"
msgstr ""
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr ""
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9940,19 +10009,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10228,235 +10297,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "без порÑдку Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ: %s"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10464,51 +10533,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10689,26 +10758,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10779,7 +10852,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10845,65 +10923,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "Ðеочікувана помилка при виконанні команди."
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/vi_VN/LC_MESSAGES/nova.po b/nova/locale/vi_VN/LC_MESSAGES/nova.po
new file mode 100644
index 000000000..d45a6e21f
--- /dev/null
+++ b/nova/locale/vi_VN/LC_MESSAGES/nova.po
@@ -0,0 +1,10918 @@
+# English (United States) translations for nova.
+# Copyright (C) 2012 ORGANIZATION
+# This file is distributed under the same license as the nova project.
+#
+# Translators:
+msgid ""
+msgstr ""
+"Project-Id-Version: Nova\n"
+"Report-Msgid-Bugs-To: https://bugs.launchpad.net/nova\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
+"PO-Revision-Date: 2013-05-13 19:22+0000\n"
+"Last-Translator: openstackjenkins <jenkins@openstack.org>\n"
+"Language-Team: Vietnamese (Viet Nam) "
+"(http://www.transifex.com/projects/p/openstack/language/vi_VN/)\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Generated-By: Babel 0.9.6\n"
+
+#: nova/block_device.py:167 nova/virt/hyperv/basevolumeutils.py:91
+#, python-format
+msgid "block_device_list %s"
+msgstr ""
+
+#: nova/context.py:63
+#, python-format
+msgid "Arguments dropped when creating context: %s"
+msgstr ""
+
+#: nova/context.py:108
+#, python-format
+msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r"
+msgstr ""
+
+#: nova/crypto.py:55
+msgid "Filename of root CA"
+msgstr ""
+
+#: nova/crypto.py:58
+msgid "Filename of private key"
+msgstr ""
+
+#: nova/crypto.py:61
+msgid "Filename of root Certificate Revocation List"
+msgstr ""
+
+#: nova/crypto.py:64
+msgid "Where we keep our keys"
+msgstr ""
+
+#: nova/crypto.py:67
+msgid "Where we keep our root CA"
+msgstr ""
+
+#: nova/crypto.py:70
+msgid "Should we use a CA for each project?"
+msgstr ""
+
+#: nova/crypto.py:74
+#, python-format
+msgid "Subject for certificate for users, %s for project, user, timestamp"
+msgstr ""
+
+#: nova/crypto.py:79
+#, python-format
+msgid "Subject for certificate for projects, %s for project, timestamp"
+msgstr ""
+
+#: nova/crypto.py:210
+msgid "Unable to find the key"
+msgstr ""
+
+#: nova/crypto.py:393
+msgid "Failed to write inbound.csr"
+msgstr ""
+
+#: nova/crypto.py:395
+#, python-format
+msgid "Flags path: %s"
+msgstr ""
+
+#: nova/exception.py:112
+msgid "An unknown exception occurred."
+msgstr ""
+
+#: nova/exception.py:133 nova/openstack/common/rpc/common.py:86
+msgid "Exception in string format operation"
+msgstr ""
+
+#: nova/exception.py:153
+msgid "Unknown"
+msgstr ""
+
+#: nova/exception.py:163
+#, python-format
+msgid "Failed to encrypt text: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:167
+#, python-format
+msgid "Failed to decrypt text: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:171
+msgid "Virtual Interface creation failed"
+msgstr ""
+
+#: nova/exception.py:175
+msgid "5 attempts to create virtual interfacewith unique mac address failed"
+msgstr ""
+
+#: nova/exception.py:180
+#, python-format
+msgid "Connection to glance host %(host)s:%(port)s failed: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:185
+msgid "Not authorized."
+msgstr ""
+
+#: nova/exception.py:190
+msgid "User does not have admin privileges"
+msgstr ""
+
+#: nova/exception.py:194
+#, python-format
+msgid "Policy doesn't allow %(action)s to be performed."
+msgstr ""
+
+#: nova/exception.py:198
+#, python-format
+msgid "Image %(image_id)s is not active."
+msgstr ""
+
+#: nova/exception.py:202
+#, python-format
+msgid "Not authorized for image %(image_id)s."
+msgstr ""
+
+#: nova/exception.py:206
+msgid "Unacceptable parameters."
+msgstr ""
+
+#: nova/exception.py:211
+msgid "Block Device Mapping is Invalid."
+msgstr ""
+
+#: nova/exception.py:215
+#, python-format
+msgid "Block Device Mapping is Invalid: failed to get snapshot %(id)s."
+msgstr ""
+
+#: nova/exception.py:220
+#, python-format
+msgid "Block Device Mapping is Invalid: failed to get volume %(id)s."
+msgstr ""
+
+#: nova/exception.py:225
+#, python-format
+msgid "Volume %(volume_id)s is not attached to anything"
+msgstr ""
+
+#: nova/exception.py:229
+#, python-format
+msgid ""
+"Volume %(volume_id)s did not finish being created even after we waited "
+"%(seconds)s seconds or %(attempts)s attempts."
+msgstr ""
+
+#: nova/exception.py:235 nova/api/ec2/cloud.py:463
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
+msgid "Keypair data is invalid"
+msgstr ""
+
+#: nova/exception.py:239
+msgid "The request is invalid."
+msgstr ""
+
+#: nova/exception.py:243
+msgid "Invalid input received"
+msgstr ""
+
+#: nova/exception.py:247
+msgid "Invalid volume"
+msgstr ""
+
+#: nova/exception.py:251 nova/api/openstack/compute/servers.py:1332
+#: nova/api/openstack/compute/contrib/admin_actions.py:242
+msgid "Invalid metadata"
+msgstr ""
+
+#: nova/exception.py:255
+msgid "Invalid metadata size"
+msgstr ""
+
+#: nova/exception.py:259
+#, python-format
+msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s"
+msgstr ""
+
+#: nova/exception.py:263 nova/api/ec2/cloud.py:625
+#, python-format
+msgid "Invalid IP protocol %(protocol)s."
+msgstr ""
+
+#: nova/exception.py:267
+#, python-format
+msgid "Invalid content type %(content_type)s."
+msgstr ""
+
+#: nova/exception.py:271
+#, python-format
+msgid "Invalid cidr %(cidr)s."
+msgstr ""
+
+#: nova/exception.py:275 nova/openstack/common/db/exception.py:44
+msgid "Invalid Parameter: Unicode is not supported by the current database."
+msgstr ""
+
+#: nova/exception.py:282
+#, python-format
+msgid "%(err)s"
+msgstr ""
+
+#: nova/exception.py:286
+#, python-format
+msgid ""
+"Cannot perform action '%(action)s' on aggregate %(aggregate_id)s. Reason:"
+" %(reason)s."
+msgstr ""
+
+#: nova/exception.py:291
+#, python-format
+msgid "Group not valid. Reason: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:295 nova/openstack/common/db/sqlalchemy/utils.py:33
+msgid "Sort key supplied was not valid."
+msgstr ""
+
+#: nova/exception.py:299
+#, python-format
+msgid ""
+"Instance %(instance_uuid)s in %(attr)s %(state)s. Cannot %(method)s while"
+" the instance is in this state."
+msgstr ""
+
+#: nova/exception.py:304
+#, python-format
+msgid "Instance %(instance_id)s is not running."
+msgstr ""
+
+#: nova/exception.py:308
+#, python-format
+msgid "Instance %(instance_id)s is not in rescue mode"
+msgstr ""
+
+#: nova/exception.py:312
+#, python-format
+msgid "Instance %(instance_id)s cannot be rescued: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:316
+#, python-format
+msgid "Instance %(instance_id)s is not ready"
+msgstr ""
+
+#: nova/exception.py:320
+msgid "Failed to suspend instance"
+msgstr ""
+
+#: nova/exception.py:324
+#, python-format
+msgid "Failed to resume instance: %(reason)s."
+msgstr ""
+
+#: nova/exception.py:328
+#, python-format
+msgid "Failed to power on instance: %(reason)s."
+msgstr ""
+
+#: nova/exception.py:332
+#, python-format
+msgid "Failed to power off instance: %(reason)s."
+msgstr ""
+
+#: nova/exception.py:336
+msgid "Failed to reboot instance"
+msgstr ""
+
+#: nova/exception.py:340
+msgid "Failed to terminate instance"
+msgstr ""
+
+#: nova/exception.py:344
+msgid "Failed to deploy instance"
+msgstr ""
+
+#: nova/exception.py:348
+msgid "Service is unavailable at this time."
+msgstr ""
+
+#: nova/exception.py:352
+msgid "Insufficient compute resources."
+msgstr ""
+
+#: nova/exception.py:356
+#, python-format
+msgid "Compute service of %(host)s is unavailable at this time."
+msgstr ""
+
+#: nova/exception.py:360
+#, python-format
+msgid "Unable to migrate instance (%(instance_id)s) to current host (%(host)s)."
+msgstr ""
+
+#: nova/exception.py:365
+msgid "The supplied hypervisor type of is invalid."
+msgstr ""
+
+#: nova/exception.py:369
+msgid "The instance requires a newer hypervisor version than has been provided."
+msgstr ""
+
+#: nova/exception.py:374
+#, python-format
+msgid ""
+"The supplied disk path (%(path)s) already exists, it is expected not to "
+"exist."
+msgstr ""
+
+#: nova/exception.py:379
+#, python-format
+msgid "The supplied device path (%(path)s) is invalid."
+msgstr ""
+
+#: nova/exception.py:383
+#, python-format
+msgid "The supplied device path (%(path)s) is in use."
+msgstr ""
+
+#: nova/exception.py:388
+#, python-format
+msgid "The supplied device (%(device)s) is busy."
+msgstr ""
+
+#: nova/exception.py:392
+msgid "Unacceptable CPU info"
+msgstr ""
+
+#: nova/exception.py:396
+#, python-format
+msgid "%(address)s is not a valid IP v4/6 address."
+msgstr ""
+
+#: nova/exception.py:400
+#, python-format
+msgid ""
+"VLAN tag is not appropriate for the port group %(bridge)s. Expected VLAN "
+"tag is %(tag)s, but the one associated with the port group is %(pgroup)s."
+msgstr ""
+
+#: nova/exception.py:406
+#, python-format
+msgid ""
+"vSwitch which contains the port group %(bridge)s is not associated with "
+"the desired physical adapter. Expected vSwitch is %(expected)s, but the "
+"one associated is %(actual)s."
+msgstr ""
+
+#: nova/exception.py:413
+#, python-format
+msgid "Disk format %(disk_format)s is not acceptable"
+msgstr ""
+
+#: nova/exception.py:417
+#, python-format
+msgid "Image %(image_id)s is unacceptable: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:421
+#, python-format
+msgid "Instance %(instance_id)s is unacceptable: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:425
+#, python-format
+msgid "Ec2 id %(ec2_id)s is unacceptable."
+msgstr ""
+
+#: nova/exception.py:429
+#, python-format
+msgid "Expected a uuid but received %(uuid)s."
+msgstr ""
+
+#: nova/exception.py:433
+#, python-format
+msgid "Invalid ID received %(id)s."
+msgstr ""
+
+#: nova/exception.py:437
+msgid "Constraint not met."
+msgstr ""
+
+#: nova/exception.py:442
+msgid "Resource could not be found."
+msgstr ""
+
+#: nova/exception.py:447
+#, python-format
+msgid "No agent-build associated with id %(id)s."
+msgstr ""
+
+#: nova/exception.py:451
+#, python-format
+msgid "Volume %(volume_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:455
+#, python-format
+msgid "Snapshot %(snapshot_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:459
+#, python-format
+msgid "No target id found for volume %(volume_id)s."
+msgstr ""
+
+#: nova/exception.py:463
+#, python-format
+msgid "No disk at %(location)s"
+msgstr ""
+
+#: nova/exception.py:467
+#, python-format
+msgid "Could not find a handler for %(driver_type)s volume."
+msgstr ""
+
+#: nova/exception.py:471
+#, python-format
+msgid "Invalid image href %(image_href)s."
+msgstr ""
+
+#: nova/exception.py:475
+#, python-format
+msgid "Image %(image_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:479
+#, python-format
+msgid ""
+"Image %(image_id)s could not be found. The nova EC2 API assigns image ids"
+" dynamically when they are listed for the first time. Have you listed "
+"image ids since adding this image?"
+msgstr ""
+
+#: nova/exception.py:486
+#, python-format
+msgid "Project %(project_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:490
+msgid "Cannot find SR to read/write VDI."
+msgstr ""
+
+#: nova/exception.py:494
+#, python-format
+msgid "Network %(network_id)s is duplicated."
+msgstr ""
+
+#: nova/exception.py:498
+#, python-format
+msgid "Network %(network_id)s is still in use."
+msgstr ""
+
+#: nova/exception.py:502
+#, python-format
+msgid "%(req)s is required to create a network."
+msgstr ""
+
+#: nova/exception.py:506
+#, python-format
+msgid "Network %(network_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:510
+#, python-format
+msgid "Port id %(port_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:514
+#, python-format
+msgid "Network could not be found for bridge %(bridge)s"
+msgstr ""
+
+#: nova/exception.py:518
+#, python-format
+msgid "Network could not be found for uuid %(uuid)s"
+msgstr ""
+
+#: nova/exception.py:522
+#, python-format
+msgid "Network could not be found with cidr %(cidr)s."
+msgstr ""
+
+#: nova/exception.py:526
+#, python-format
+msgid "Network could not be found for instance %(instance_id)s."
+msgstr ""
+
+#: nova/exception.py:530
+msgid "No networks defined."
+msgstr ""
+
+#: nova/exception.py:534
+#, python-format
+msgid ""
+"Either Network uuid %(network_uuid)s is not present or is not assigned to"
+" the project %(project_id)s."
+msgstr ""
+
+#: nova/exception.py:539
+msgid "Could not find the datastore reference(s) which the VM uses."
+msgstr ""
+
+#: nova/exception.py:543
+#, python-format
+msgid "Port %(port_id)s is still in use."
+msgstr ""
+
+#: nova/exception.py:547
+#, python-format
+msgid "Port %(port_id)s not usable for instance %(instance)s."
+msgstr ""
+
+#: nova/exception.py:551
+#, python-format
+msgid "No free port available for instance %(instance)s."
+msgstr ""
+
+#: nova/exception.py:555
+#, python-format
+msgid "No fixed IP associated with id %(id)s."
+msgstr ""
+
+#: nova/exception.py:559
+#, python-format
+msgid "Fixed ip not found for address %(address)s."
+msgstr ""
+
+#: nova/exception.py:563
+#, python-format
+msgid "Instance %(instance_uuid)s has zero fixed ips."
+msgstr ""
+
+#: nova/exception.py:567
+#, python-format
+msgid "Network host %(host)s has zero fixed ips in network %(network_id)s."
+msgstr ""
+
+#: nova/exception.py:572
+#, python-format
+msgid "Instance %(instance_uuid)s doesn't have fixed ip '%(ip)s'."
+msgstr ""
+
+#: nova/exception.py:576
+#, python-format
+msgid ""
+"Fixed IP address (%(address)s) does not exist in network "
+"(%(network_uuid)s)."
+msgstr ""
+
+#: nova/exception.py:581
+#, python-format
+msgid ""
+"Fixed IP address %(address)s is already in use on instance "
+"%(instance_uuid)s."
+msgstr ""
+
+#: nova/exception.py:586
+#, python-format
+msgid "More than one instance is associated with fixed ip address '%(address)s'."
+msgstr ""
+
+#: nova/exception.py:591
+#, python-format
+msgid "Fixed IP address %(address)s is invalid."
+msgstr ""
+
+#: nova/exception.py:595
+msgid "Zero fixed ips available."
+msgstr ""
+
+#: nova/exception.py:599
+msgid "Zero fixed ips could be found."
+msgstr ""
+
+#: nova/exception.py:608
+#, python-format
+msgid "Floating ip %(address)s already exists."
+msgstr ""
+
+#: nova/exception.py:612
+#, python-format
+msgid "Floating ip not found for id %(id)s."
+msgstr ""
+
+#: nova/exception.py:616
+#, python-format
+msgid "The DNS entry %(name)s already exists in domain %(domain)s."
+msgstr ""
+
+#: nova/exception.py:620
+#, python-format
+msgid "Floating ip not found for address %(address)s."
+msgstr ""
+
+#: nova/exception.py:624
+#, python-format
+msgid "Floating ip not found for host %(host)s."
+msgstr ""
+
+#: nova/exception.py:628
+#, python-format
+msgid "Multiple floating ips are found for address %(address)s."
+msgstr ""
+
+#: nova/exception.py:632
+msgid "Floating ip pool not found."
+msgstr ""
+
+#: nova/exception.py:637
+msgid "Zero floating ips available."
+msgstr ""
+
+#: nova/exception.py:642
+#, python-format
+msgid "Floating ip %(address)s is associated."
+msgstr ""
+
+#: nova/exception.py:646
+#, python-format
+msgid "Floating ip %(address)s is not associated."
+msgstr ""
+
+#: nova/exception.py:650
+msgid "Zero floating ips exist."
+msgstr ""
+
+#: nova/exception.py:654
+#, python-format
+msgid "Interface %(interface)s not found."
+msgstr ""
+
+#: nova/exception.py:658
+msgid "Cannot disassociate auto assigined floating ip"
+msgstr ""
+
+#: nova/exception.py:662
+#, python-format
+msgid "Keypair %(name)s not found for user %(user_id)s"
+msgstr ""
+
+#: nova/exception.py:666
+#, python-format
+msgid "Certificate %(certificate_id)s not found."
+msgstr ""
+
+#: nova/exception.py:670
+#, python-format
+msgid "Service %(service_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:674
+#, python-format
+msgid "Host %(host)s could not be found."
+msgstr ""
+
+#: nova/exception.py:678
+#, python-format
+msgid "Compute host %(host)s could not be found."
+msgstr ""
+
+#: nova/exception.py:682
+#, python-format
+msgid "Could not find binary %(binary)s on host %(host)s."
+msgstr ""
+
+#: nova/exception.py:686
+#, python-format
+msgid "Invalid reservation expiration %(expire)s."
+msgstr ""
+
+#: nova/exception.py:690
+#, python-format
+msgid ""
+"Change would make usage less than 0 for the following resources: "
+"%(unders)s"
+msgstr ""
+
+#: nova/exception.py:695
+msgid "Quota could not be found"
+msgstr ""
+
+#: nova/exception.py:699
+#, python-format
+msgid "Unknown quota resources %(unknown)s."
+msgstr ""
+
+#: nova/exception.py:703
+#, python-format
+msgid "Quota for project %(project_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:707
+#, python-format
+msgid "Quota class %(class_name)s could not be found."
+msgstr ""
+
+#: nova/exception.py:711
+#, python-format
+msgid "Quota usage for project %(project_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:715
+#, python-format
+msgid "Quota reservation %(uuid)s could not be found."
+msgstr ""
+
+#: nova/exception.py:719
+#, python-format
+msgid "Quota exceeded for resources: %(overs)s"
+msgstr ""
+
+#: nova/exception.py:723
+#, python-format
+msgid "Security group %(security_group_id)s not found."
+msgstr ""
+
+#: nova/exception.py:727
+#, python-format
+msgid "Security group %(security_group_id)s not found for project %(project_id)s."
+msgstr ""
+
+#: nova/exception.py:732
+#, python-format
+msgid "Security group with rule %(rule_id)s not found."
+msgstr ""
+
+#: nova/exception.py:736
+#, python-format
+msgid ""
+"Security group %(security_group_id)s is already associated with the "
+"instance %(instance_id)s"
+msgstr ""
+
+#: nova/exception.py:741
+#, python-format
+msgid ""
+"Security group %(security_group_id)s is not associated with the instance "
+"%(instance_id)s"
+msgstr ""
+
+#: nova/exception.py:746
+#, python-format
+msgid "Security group default rule (%rule_id)s not found."
+msgstr ""
+
+#: nova/exception.py:750
+msgid ""
+"Network requires port_security_enabled and subnet associated in order to "
+"apply security groups."
+msgstr ""
+
+#: nova/exception.py:755
+msgid "No Unique Match Found."
+msgstr ""
+
+#: nova/exception.py:760
+#, python-format
+msgid "Migration %(migration_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:764
+#, python-format
+msgid "Migration not found for instance %(instance_id)s with status %(status)s."
+msgstr ""
+
+#: nova/exception.py:769
+#, python-format
+msgid "Console pool %(pool_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:773
+#, python-format
+msgid ""
+"Console pool of type %(console_type)s for compute host %(compute_host)s "
+"on proxy host %(host)s not found."
+msgstr ""
+
+#: nova/exception.py:779
+#, python-format
+msgid "Console %(console_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:783
+#, python-format
+msgid "Console for instance %(instance_uuid)s could not be found."
+msgstr ""
+
+#: nova/exception.py:787
+#, python-format
+msgid ""
+"Console for instance %(instance_uuid)s in pool %(pool_id)s could not be "
+"found."
+msgstr ""
+
+#: nova/exception.py:792
+#, python-format
+msgid "Invalid console type %(console_type)s"
+msgstr ""
+
+#: nova/exception.py:796
+#, python-format
+msgid "Instance type %(instance_type_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:800
+#, python-format
+msgid "Instance type with name %(instance_type_name)s could not be found."
+msgstr ""
+
+#: nova/exception.py:805
+#, python-format
+msgid "Flavor %(flavor_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:809
+#, python-format
+msgid "Flavor access not found for %(flavor_id)s / %(project_id)s combination."
+msgstr ""
+
+#: nova/exception.py:814
+#, python-format
+msgid "Cell %(cell_name)s doesn't exist."
+msgstr ""
+
+#: nova/exception.py:818
+#, python-format
+msgid "Inconsistency in cell routing: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:822
+#, python-format
+msgid "Service API method not found: %(detail)s"
+msgstr ""
+
+#: nova/exception.py:826
+msgid "Timeout waiting for response from cell"
+msgstr ""
+
+#: nova/exception.py:830
+#, python-format
+msgid "Cell message has reached maximum hop count: %(hop_count)s"
+msgstr ""
+
+#: nova/exception.py:834
+msgid "No cells available matching scheduling criteria."
+msgstr ""
+
+#: nova/exception.py:838
+#, python-format
+msgid "Exception received during cell processing: %(exc_name)s."
+msgstr ""
+
+#: nova/exception.py:842
+#, python-format
+msgid "Cell is not known for instance %(instance_uuid)s"
+msgstr ""
+
+#: nova/exception.py:846
+#, python-format
+msgid "Scheduler Host Filter %(filter_name)s could not be found."
+msgstr ""
+
+#: nova/exception.py:850
+#, python-format
+msgid "Instance %(instance_uuid)s has no metadata with key %(metadata_key)s."
+msgstr ""
+
+#: nova/exception.py:855
+#, python-format
+msgid ""
+"Instance %(instance_uuid)s has no system metadata with key "
+"%(metadata_key)s."
+msgstr ""
+
+#: nova/exception.py:860
+#, python-format
+msgid ""
+"Instance Type %(instance_type_id)s has no extra specs with key "
+"%(extra_specs_key)s."
+msgstr ""
+
+#: nova/exception.py:865
+#, python-format
+msgid "File %(file_path)s could not be found."
+msgstr ""
+
+#: nova/exception.py:869
+msgid "Zero files could be found."
+msgstr ""
+
+#: nova/exception.py:873
+#, python-format
+msgid "Virtual switch associated with the network adapter %(adapter)s not found."
+msgstr ""
+
+#: nova/exception.py:878
+#, python-format
+msgid "Network adapter %(adapter)s could not be found."
+msgstr ""
+
+#: nova/exception.py:882
+#, python-format
+msgid "Class %(class_name)s could not be found: %(exception)s"
+msgstr ""
+
+#: nova/exception.py:886
+msgid "Action not allowed."
+msgstr ""
+
+#: nova/exception.py:890
+msgid "Rotation is not allowed for snapshots"
+msgstr ""
+
+#: nova/exception.py:894
+msgid "Rotation param is required for backup image_type"
+msgstr ""
+
+#: nova/exception.py:898
+#, python-format
+msgid "Key pair %(key_name)s already exists."
+msgstr ""
+
+#: nova/exception.py:902
+#, python-format
+msgid "Instance %(name)s already exists."
+msgstr ""
+
+#: nova/exception.py:906
+#, python-format
+msgid "Instance Type with name %(name)s already exists."
+msgstr ""
+
+#: nova/exception.py:910
+#, python-format
+msgid "Instance Type with ID %(flavor_id)s already exists."
+msgstr ""
+
+#: nova/exception.py:914
+#, python-format
+msgid ""
+"Flavor access alreay exists for flavor %(flavor_id)s and project "
+"%(project_id)s combination."
+msgstr ""
+
+#: nova/exception.py:919
+#, python-format
+msgid "%(path)s is not on shared storage: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:923
+#, python-format
+msgid "%(path)s is not on local storage: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:927
+msgid "Migration error"
+msgstr ""
+
+#: nova/exception.py:931
+msgid "Migration pre-check error"
+msgstr ""
+
+#: nova/exception.py:935
+#, python-format
+msgid "Malformed message body: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:941
+#, python-format
+msgid "Could not find config at %(path)s"
+msgstr ""
+
+#: nova/exception.py:945
+#, python-format
+msgid "Could not load paste app '%(name)s' from %(path)s"
+msgstr ""
+
+#: nova/exception.py:949
+msgid "When resizing, instances must change flavor!"
+msgstr ""
+
+#: nova/exception.py:953
+#, python-format
+msgid "Resize error: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:957
+msgid "Image is larger than instance type allows"
+msgstr ""
+
+#: nova/exception.py:961
+msgid "Instance type's memory is too small for requested image."
+msgstr ""
+
+#: nova/exception.py:965
+msgid "Instance type's disk is too small for requested image."
+msgstr ""
+
+#: nova/exception.py:969
+#, python-format
+msgid "Insufficient free memory on compute node to start %(uuid)s."
+msgstr ""
+
+#: nova/exception.py:973
+msgid "Could not fetch bandwidth/cpu/disk metrics for this host."
+msgstr ""
+
+#: nova/exception.py:977
+#, python-format
+msgid "No valid host was found. %(reason)s"
+msgstr ""
+
+#: nova/exception.py:981
+msgid "Quota exceeded"
+msgstr ""
+
+#: nova/exception.py:988
+#, python-format
+msgid ""
+"Quota exceeded for %(overs)s: Requested %(req)s, but already used "
+"%(used)d of %(allowed)d %(resource)s"
+msgstr ""
+
+#: nova/exception.py:993
+msgid "Maximum number of floating ips exceeded"
+msgstr ""
+
+#: nova/exception.py:997
+msgid "Maximum number of fixed ips exceeded"
+msgstr ""
+
+#: nova/exception.py:1001
+#, python-format
+msgid "Maximum number of metadata items exceeds %(allowed)d"
+msgstr ""
+
+#: nova/exception.py:1005
+msgid "Personality file limit exceeded"
+msgstr ""
+
+#: nova/exception.py:1009
+msgid "Personality file path too long"
+msgstr ""
+
+#: nova/exception.py:1013
+msgid "Personality file content too long"
+msgstr ""
+
+#: nova/exception.py:1017
+msgid "Maximum number of key pairs exceeded"
+msgstr ""
+
+#: nova/exception.py:1021
+msgid "Maximum number of security groups or rules exceeded"
+msgstr ""
+
+#: nova/exception.py:1025
+#, python-format
+msgid ""
+"Aggregate %(aggregate_id)s: action '%(action)s' caused an error: "
+"%(reason)s."
+msgstr ""
+
+#: nova/exception.py:1030
+#, python-format
+msgid "Aggregate %(aggregate_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1034
+#, python-format
+msgid "Aggregate %(aggregate_name)s already exists."
+msgstr ""
+
+#: nova/exception.py:1038
+#, python-format
+msgid "Aggregate %(aggregate_id)s has no host %(host)s."
+msgstr ""
+
+#: nova/exception.py:1042
+#, python-format
+msgid "Aggregate %(aggregate_id)s has no metadata with key %(metadata_key)s."
+msgstr ""
+
+#: nova/exception.py:1047
+#, python-format
+msgid "Aggregate %(aggregate_id)s already has host %(host)s."
+msgstr ""
+
+#: nova/exception.py:1051
+msgid "Unable to create instance type"
+msgstr ""
+
+#: nova/exception.py:1055
+#, python-format
+msgid "Failed to set admin password on %(instance)s because %(reason)s"
+msgstr ""
+
+#: nova/exception.py:1061
+#, python-format
+msgid "Detected existing vlan with id %(vlan)d"
+msgstr ""
+
+#: nova/exception.py:1065
+msgid "There was a conflict when trying to complete your request."
+msgstr ""
+
+#: nova/exception.py:1070
+#, python-format
+msgid "Instance %(instance_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1074
+#, python-format
+msgid "Info cache for instance %(instance_uuid)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1079
+#, python-format
+msgid "Node %(node_id)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1083
+#, python-format
+msgid "Node with UUID %(node_uuid)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1087
+#, python-format
+msgid "Marker %(marker)s could not be found."
+msgstr ""
+
+#: nova/exception.py:1091
+#, python-format
+msgid "Invalid id: %(val)s (expecting \"i-...\")."
+msgstr ""
+
+#: nova/exception.py:1095
+#, python-format
+msgid "Could not fetch image %(image_id)s"
+msgstr ""
+
+#: nova/exception.py:1099
+#, python-format
+msgid "Could not upload image %(image_id)s"
+msgstr ""
+
+#: nova/exception.py:1103
+#, python-format
+msgid "Task %(task_name)s is already running on host %(host)s"
+msgstr ""
+
+#: nova/exception.py:1107
+#, python-format
+msgid "Task %(task_name)s is not running on host %(host)s"
+msgstr ""
+
+#: nova/exception.py:1111
+#, python-format
+msgid "Instance %(instance_uuid)s is locked"
+msgstr ""
+
+#: nova/exception.py:1115
+#, python-format
+msgid "Could not mount vfat config drive. %(operation)s failed. Error: %(error)s"
+msgstr ""
+
+#: nova/exception.py:1120
+#, python-format
+msgid "Unknown config drive format %(format)s. Select one of iso9660 or vfat."
+msgstr ""
+
+#: nova/exception.py:1125
+#, python-format
+msgid "Failed to attach network adapter device to %(instance)s"
+msgstr ""
+
+#: nova/exception.py:1129
+#, python-format
+msgid "Failed to detach network adapter device from %(instance)s"
+msgstr ""
+
+#: nova/exception.py:1133
+#, python-format
+msgid ""
+"User data too large. User data must be no larger than %(maxsize)s bytes "
+"once base64 encoded. Your data is %(length)d bytes"
+msgstr ""
+
+#: nova/exception.py:1139
+msgid "User data needs to be valid base 64."
+msgstr ""
+
+#: nova/exception.py:1143
+#, python-format
+msgid ""
+"unexpected task state: expecting %(expected)s but the actual state is "
+"%(actual)s"
+msgstr ""
+
+#: nova/exception.py:1148
+#, python-format
+msgid ""
+"Action for request_id %(request_id)s on instance %(instance_uuid)s not "
+"found"
+msgstr ""
+
+#: nova/exception.py:1153
+#, python-format
+msgid "Event %(event)s not found for action id %(action_id)s"
+msgstr ""
+
+#: nova/exception.py:1157
+#, python-format
+msgid "The CA file for %(project)s could not be found"
+msgstr ""
+
+#: nova/exception.py:1161
+#, python-format
+msgid "The CRL file for %(project)s could not be found"
+msgstr ""
+
+#: nova/exception.py:1165
+msgid "Instance recreate is not implemented by this virt driver."
+msgstr ""
+
+#: nova/exception.py:1169
+#, python-format
+msgid "The service from servicegroup driver %(driver) is temporarily unavailable."
+msgstr ""
+
+#: nova/exception.py:1174
+#, python-format
+msgid "%(binary)s attempted direct database access which is not allowed by policy"
+msgstr ""
+
+#: nova/exception.py:1179
+#, python-format
+msgid "Virtualization type '%(virt)s' is not supported by this compute driver"
+msgstr ""
+
+#: nova/exception.py:1184
+#, python-format
+msgid ""
+"Requested hardware '%(model)s' is not supported by the '%(virt)s' virt "
+"driver"
+msgstr ""
+
+#: nova/exception.py:1189
+#, python-format
+msgid "Invalid Base 64 data for file %(path)s"
+msgstr ""
+
+#: nova/exception.py:1193
+#, python-format
+msgid "Build of instance %(instance_uuid)s aborted: %(reason)s"
+msgstr ""
+
+#: nova/exception.py:1197
+#, python-format
+msgid "Build of instance %(instance_uuid)s was re-scheduled: %(reason)s"
+msgstr ""
+
+#: nova/hooks.py:62
+#, python-format
+msgid "Running %(name)s pre-hook: %(obj)s"
+msgstr ""
+
+#: nova/hooks.py:70
+#, python-format
+msgid "Running %(name)s post-hook: %(obj)s"
+msgstr ""
+
+#: nova/manager.py:166
+msgid "Notifying Schedulers of capabilities ..."
+msgstr ""
+
+#: nova/notifications.py:112 nova/notifications.py:152
+msgid "Failed to send state update notification"
+msgstr ""
+
+#: nova/notifications.py:232
+msgid "Failed to get nw_info"
+msgstr ""
+
+#: nova/policy.py:32
+msgid "JSON file representing policy"
+msgstr ""
+
+#: nova/policy.py:35
+msgid "Rule checked when requested rule is not found"
+msgstr ""
+
+#: nova/quota.py:966
+#, python-format
+msgid "Created reservations %(reservations)s"
+msgstr ""
+
+#: nova/quota.py:988
+#, python-format
+msgid "Failed to commit reservations %(reservations)s"
+msgstr ""
+
+#: nova/quota.py:990
+#, python-format
+msgid "Committed reservations %(reservations)s"
+msgstr ""
+
+#: nova/quota.py:1010
+#, python-format
+msgid "Failed to roll back reservations %(reservations)s"
+msgstr ""
+
+#: nova/quota.py:1012
+#, python-format
+msgid "Rolled back reservations %(reservations)s"
+msgstr ""
+
+#: nova/service.py:197
+msgid "Full set of CONF:"
+msgstr ""
+
+#: nova/service.py:204
+#, python-format
+msgid "%(flag)s : FLAG SET "
+msgstr ""
+
+#: nova/service.py:214 nova/service.py:312
+#, python-format
+msgid "Caught %s, exiting"
+msgstr ""
+
+#: nova/service.py:258
+msgid "Parent process has died unexpectedly, exiting"
+msgstr ""
+
+#: nova/service.py:294
+msgid "Forking too fast, sleeping"
+msgstr ""
+
+#: nova/service.py:317
+msgid "Unhandled exception"
+msgstr ""
+
+#: nova/service.py:324
+#, python-format
+msgid "Started child %d"
+msgstr ""
+
+#: nova/service.py:334
+#, python-format
+msgid "Starting %d workers"
+msgstr ""
+
+#: nova/service.py:348
+#, python-format
+msgid "Child %(pid)d killed by signal %(sig)d"
+msgstr ""
+
+#: nova/service.py:351
+#, python-format
+msgid "Child %(pid)d exited with status %(code)d"
+msgstr ""
+
+#: nova/service.py:354
+#, python-format
+msgid "pid %d not in child list"
+msgstr ""
+
+#: nova/service.py:374
+#, python-format
+msgid "Caught %s, stopping children"
+msgstr ""
+
+#: nova/service.py:385
+#, python-format
+msgid "Waiting on %d children to exit"
+msgstr ""
+
+#: nova/service.py:427
+#, python-format
+msgid "Starting %(topic)s node (version %(version)s)"
+msgstr ""
+
+#: nova/service.py:444 nova/openstack/common/rpc/service.py:47
+#, python-format
+msgid "Creating Consumer connection for Service %s"
+msgstr ""
+
+#: nova/service.py:464
+#, python-format
+msgid "Join ServiceGroup membership for this service %s"
+msgstr ""
+
+#: nova/service.py:546
+msgid "Service killed that has no database entry"
+msgstr ""
+
+#: nova/service.py:581
+#, python-format
+msgid "Temporary directory is invalid: %s"
+msgstr ""
+
+#: nova/service.py:679
+msgid "serve() can only be called once"
+msgstr ""
+
+#: nova/utils.py:142
+#, python-format
+msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
+msgstr ""
+
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
+#, python-format
+msgid "Running cmd (SSH): %s"
+msgstr ""
+
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
+msgid "Environment not supported over SSH"
+msgstr ""
+
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
+msgid "process_input not supported over SSH"
+msgstr ""
+
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
+#, python-format
+msgid "Result was %s"
+msgstr ""
+
+#: nova/utils.py:231
+#, python-format
+msgid "debug in callback: %s"
+msgstr ""
+
+#: nova/utils.py:393
+#, python-format
+msgid "Link Local address is not found.:%s"
+msgstr ""
+
+#: nova/utils.py:396
+#, python-format
+msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s"
+msgstr ""
+
+#: nova/utils.py:435
+#, python-format
+msgid "Invalid backend: %s"
+msgstr ""
+
+#: nova/utils.py:496
+#, python-format
+msgid "Unknown byte multiplier: %s"
+msgstr ""
+
+#: nova/utils.py:625
+#, python-format
+msgid "Expected object of type: %s"
+msgstr ""
+
+#: nova/utils.py:654
+#, python-format
+msgid "Invalid server_string: %s"
+msgstr ""
+
+#: nova/utils.py:810
+#, python-format
+msgid "timefunc: '%(name)s' took %(total_time).2f secs"
+msgstr ""
+
+#: nova/utils.py:876
+#, python-format
+msgid "Reloading cached file %s"
+msgstr ""
+
+#: nova/utils.py:1008 nova/virt/configdrive.py:177
+#, python-format
+msgid "Could not remove tmpdir: %s"
+msgstr ""
+
+#: nova/utils.py:1160
+#, python-format
+msgid "%s is not a string or unicode"
+msgstr ""
+
+#: nova/utils.py:1164
+#, python-format
+msgid "%(name)s has less than %(min_length)s characters."
+msgstr ""
+
+#: nova/utils.py:1169
+#, python-format
+msgid "%(name)s has more than %(max_length)s characters."
+msgstr ""
+
+#: nova/wsgi.py:122
+#, python-format
+msgid "%(name)s listening on %(host)s:%(port)s"
+msgstr ""
+
+#: nova/wsgi.py:137
+#, python-format
+msgid "Unable to find cert_file : %s"
+msgstr ""
+
+#: nova/wsgi.py:141
+#, python-format
+msgid "Unable to find ca_file : %s"
+msgstr ""
+
+#: nova/wsgi.py:145
+#, python-format
+msgid "Unable to find key_file : %s"
+msgstr ""
+
+#: nova/wsgi.py:149
+msgid ""
+"When running server in SSL mode, you must specify both a cert_file and "
+"key_file option value in your configuration file"
+msgstr ""
+
+#: nova/wsgi.py:180
+#, python-format
+msgid "Failed to start %(name)s on %(host)s:%(port)s with SSL support"
+msgstr ""
+
+#: nova/wsgi.py:207
+msgid "Stopping WSGI server."
+msgstr ""
+
+#: nova/wsgi.py:225
+msgid "WSGI server has stopped."
+msgstr ""
+
+#: nova/wsgi.py:294
+msgid "You must implement __call__"
+msgstr ""
+
+#: nova/wsgi.py:480
+#, python-format
+msgid "Loading app %(name)s from %(path)s"
+msgstr ""
+
+#: nova/api/auth.py:116
+msgid "Invalid service catalog json."
+msgstr ""
+
+#: nova/api/auth.py:139
+msgid "Sourcing roles from deprecated X-Role HTTP header"
+msgstr ""
+
+#: nova/api/sizelimit.py:53 nova/api/sizelimit.py:62 nova/api/sizelimit.py:76
+#: nova/api/metadata/password.py:62
+msgid "Request is too large."
+msgstr ""
+
+#: nova/api/validator.py:131
+#, python-format
+msgid "%(key)s with value %(value)s failed validator %(name)s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:81
+#, python-format
+msgid "%(code)s: %(message)s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:104
+#, python-format
+msgid "FaultWrapper: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:174
+msgid "Too many failed authentications."
+msgstr ""
+
+#: nova/api/ec2/__init__.py:184
+#, python-format
+msgid ""
+"Access key %(access_key)s has had %(failures)d failed authentications and"
+" will be locked out for %(lock_mins)d minutes."
+msgstr ""
+
+#: nova/api/ec2/__init__.py:201
+msgid "Signature not provided"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:205
+msgid "Access key not provided"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:240 nova/api/ec2/__init__.py:255
+msgid "Failure communicating with keystone"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:254
+#, python-format
+msgid "Keystone failure: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:314
+msgid "Timestamp failed validation."
+msgstr ""
+
+#: nova/api/ec2/__init__.py:334
+#, python-format
+msgid "action: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:336
+#, python-format
+msgid "arg: %(key)s\t\tval: %(value)s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:411
+#, python-format
+msgid "Unauthorized request for controller=%(controller)s and action=%(action)s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:483
+#, python-format
+msgid "InstanceNotFound raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:489
+#, python-format
+msgid "VolumeNotFound raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:495
+#, python-format
+msgid "SnapshotNotFound raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:501
+#, python-format
+msgid "NotFound raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:504
+#, python-format
+msgid "EC2APIError raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:512
+#, python-format
+msgid "KeyPairExists raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:517
+#, python-format
+msgid "InvalidKeypair raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:522
+#, python-format
+msgid "InvalidParameterValue raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:526
+#, python-format
+msgid "InvalidPortRange raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:530
+#, python-format
+msgid "NotAuthorized raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:534
+#, python-format
+msgid "InvalidRequest raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:538
+#, python-format
+msgid "QuotaError raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:542
+#, python-format
+msgid "Invalid id: bogus (expecting \"i-...\"): %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:551
+#, python-format
+msgid "Unexpected error raised: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:552
+#, python-format
+msgid "Environment: %s"
+msgstr ""
+
+#: nova/api/ec2/__init__.py:554 nova/api/metadata/handler.py:136
+#: nova/api/metadata/handler.py:183
+msgid "An unknown error has occurred. Please try your request again."
+msgstr ""
+
+#: nova/api/ec2/apirequest.py:62
+#, python-format
+msgid "Unsupported API request: controller = %(controller)s, action = %(action)s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:391
+#, python-format
+msgid "Create snapshot of volume %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:417
+#, python-format
+msgid "Could not find key pair(s): %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:434
+#, python-format
+msgid "Create key pair %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:441 nova/api/ec2/cloud.py:460
+#: nova/api/openstack/compute/contrib/keypairs.py:93
+msgid "Quota exceeded, too many key pairs."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:450
+#, python-format
+msgid "Import key %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:470
+#, python-format
+msgid "Delete key pair %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:612 nova/api/ec2/cloud.py:733
+msgid "Not enough parameters, need group_name or group_id"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:617
+#, python-format
+msgid "%s Not enough parameters to build a valid rule"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:655 nova/api/ec2/cloud.py:687
+msgid "No rule for the specified parameters."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:678
+#, python-format
+msgid "%s - This rule already exists in group"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:761
+#, python-format
+msgid "Get console output for instance %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:834
+#, python-format
+msgid "Create volume from snapshot %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:838 nova/api/openstack/compute/contrib/volumes.py:243
+#, python-format
+msgid "Create volume of %s GB"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:866
+msgid "Delete Failed"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:879
+#, python-format
+msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:887
+msgid "Attach Failed."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:909 nova/api/openstack/compute/contrib/volumes.py:439
+#, python-format
+msgid "Detach volume %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:916
+msgid "Detach Volume Failed."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:942 nova/api/ec2/cloud.py:999
+#: nova/api/ec2/cloud.py:1553 nova/api/ec2/cloud.py:1568
+#, python-format
+msgid "attribute not supported: %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1073
+#, python-format
+msgid "vol = %s\n"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1233
+msgid "Allocate address"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1237
+msgid "No more floating IPs available"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1241
+#, python-format
+msgid "Release address %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1246
+msgid "Unable to release IP Address."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1249
+#, python-format
+msgid "Associate address %(public_ip)s to instance %(instance_id)s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1257
+msgid "Unable to associate IP Address, no fixed_ips."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1265
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
+#, python-format
+msgid "multiple fixed_ips exist, using the first: %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1274
+msgid "Floating ip is already associated."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1277
+msgid "l3driver call to add floating ip failed."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1280
+msgid "Error, unable to associate floating ip."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1288
+#, python-format
+msgid "Disassociate address %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1293
+msgid "Floating ip is not associated."
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1296
+#: nova/api/openstack/compute/contrib/floating_ips.py:97
+msgid "Cannot disassociate auto assigned floating ip"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1323
+msgid "Image must be available"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1355
+msgid "Going to start terminating instances"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1365
+#, python-format
+msgid "Reboot instance %r"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1374
+msgid "Going to stop instances"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1383
+msgid "Going to start instances"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1474
+#, python-format
+msgid "De-registering image %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1490
+msgid "imageLocation is required"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1509
+#, python-format
+msgid "Registered image %(image_location)s with id %(image_id)s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1571
+msgid "user or group not specified"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1573
+msgid "only group \"all\" is supported"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1575
+msgid "operation_type must be add or remove"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1577
+#, python-format
+msgid "Updating image %s publicity"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1590
+#, python-format
+msgid "Not allowed to modify attributes for image %s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1619
+#, python-format
+msgid ""
+"Invalid value '%(ec2_instance_id)s' for instanceId. Instance does not "
+"have a volume attached at root (%(root)s)"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1649
+#, python-format
+msgid "Couldn't stop instance with in %d sec"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1667
+#, python-format
+msgid "image of %(instance)s at %(now)s"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1691 nova/api/ec2/cloud.py:1736
+msgid "resource_id and tag are required"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1694 nova/api/ec2/cloud.py:1739
+msgid "Expecting a list of resources"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1698 nova/api/ec2/cloud.py:1743
+msgid "Only instances implemented"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1701 nova/api/ec2/cloud.py:1746
+msgid "Expecting a list of tagSets"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1758
+msgid "Expecting key to be set"
+msgstr ""
+
+#: nova/api/ec2/cloud.py:1831
+msgid "Invalid CIDR"
+msgstr ""
+
+#: nova/api/ec2/ec2utils.py:249
+msgid "Request must include either Timestamp or Expires, but cannot contain both"
+msgstr ""
+
+#: nova/api/ec2/ec2utils.py:267
+msgid "Timestamp is invalid."
+msgstr ""
+
+#: nova/api/metadata/handler.py:108
+msgid ""
+"X-Instance-ID present in request headers. The "
+"'service_quantum_metadata_proxy' option must be enabled to process this "
+"header."
+msgstr ""
+
+#: nova/api/metadata/handler.py:134 nova/api/metadata/handler.py:141
+#, python-format
+msgid "Failed to get metadata for ip: %s"
+msgstr ""
+
+#: nova/api/metadata/handler.py:153
+msgid "X-Instance-ID header is missing from request."
+msgstr ""
+
+#: nova/api/metadata/handler.py:155
+msgid "Multiple X-Instance-ID headers found within request."
+msgstr ""
+
+#: nova/api/metadata/handler.py:169
+#, python-format
+msgid ""
+"X-Instance-ID-Signature: %(signature)s does not match the expected value:"
+" %(expected_signature)s for id: %(instance_id)s. Request From: "
+"%(remote_address)s"
+msgstr ""
+
+#: nova/api/metadata/handler.py:174
+msgid "Invalid proxy request signature."
+msgstr ""
+
+#: nova/api/metadata/handler.py:181 nova/api/metadata/handler.py:188
+#, python-format
+msgid "Failed to get metadata for instance id: %s"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:53
+#, python-format
+msgid "Caught error: %s"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:62
+#, python-format
+msgid "%(url)s returned with HTTP %(status)d"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:137
+msgid "Must specify an ExtensionManager class"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
+#, python-format
+msgid "Extended resource: %s"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
+#, python-format
+msgid ""
+"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
+"resource"
+msgstr ""
+
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
+#, python-format
+msgid "Extension %(ext_name)s extending resource: %(collection)s"
+msgstr ""
+
+#: nova/api/openstack/common.py:114
+#, python-format
+msgid ""
+"status is UNKNOWN from vm_state=%(vm_state)s task_state=%(task_state)s. "
+"Bad upgrade or db corrupted?"
+msgstr ""
+
+#: nova/api/openstack/common.py:153 nova/api/openstack/common.py:187
+msgid "limit param must be an integer"
+msgstr ""
+
+#: nova/api/openstack/common.py:156 nova/api/openstack/common.py:191
+msgid "limit param must be positive"
+msgstr ""
+
+#: nova/api/openstack/common.py:181
+msgid "offset param must be an integer"
+msgstr ""
+
+#: nova/api/openstack/common.py:195
+msgid "offset param must be positive"
+msgstr ""
+
+#: nova/api/openstack/common.py:230 nova/api/openstack/compute/servers.py:554
+#, python-format
+msgid "marker [%s] not found"
+msgstr ""
+
+#: nova/api/openstack/common.py:270
+#, python-format
+msgid "href %s does not contain version"
+msgstr ""
+
+#: nova/api/openstack/common.py:285
+msgid "Image metadata limit exceeded"
+msgstr ""
+
+#: nova/api/openstack/common.py:293
+msgid "Image metadata key cannot be blank"
+msgstr ""
+
+#: nova/api/openstack/common.py:296
+msgid "Image metadata key too long"
+msgstr ""
+
+#: nova/api/openstack/common.py:299
+msgid "Invalid image metadata"
+msgstr ""
+
+#: nova/api/openstack/common.py:361
+#, python-format
+msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s"
+msgstr ""
+
+#: nova/api/openstack/common.py:364
+#, python-format
+msgid "Instance is in an invalid state for '%(action)s'"
+msgstr ""
+
+#: nova/api/openstack/common.py:444
+msgid "Rejecting snapshot request, snapshots currently disabled"
+msgstr ""
+
+#: nova/api/openstack/common.py:446
+msgid "Instance snapshots are not permitted at this time."
+msgstr ""
+
+#: nova/api/openstack/extensions.py:196
+#, python-format
+msgid "Loaded extension: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:235
+#, python-format
+msgid "Ext name: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:236
+#, python-format
+msgid "Ext alias: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:237
+#, python-format
+msgid "Ext description: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:239
+#, python-format
+msgid "Ext namespace: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:240
+#, python-format
+msgid "Ext updated: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:242
+#, python-format
+msgid "Exception loading extension: %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:256
+#, python-format
+msgid "Loading extension %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:265
+#, python-format
+msgid "Calling extension factory %s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:277
+#, python-format
+msgid "Failed to load extension %(ext_factory)s: %(exc)s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:346
+#, python-format
+msgid "Failed to load extension %(classpath)s: %(exc)s"
+msgstr ""
+
+#: nova/api/openstack/extensions.py:370
+#, python-format
+msgid "Failed to load extension %(ext_name)s: %(exc)s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:208 nova/api/openstack/wsgi.py:626
+msgid "cannot understand JSON"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:631
+msgid "too many body keys"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:675
+#, python-format
+msgid "Exception handling resource: %s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:679
+#, python-format
+msgid "Fault thrown: %s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:682
+#, python-format
+msgid "HTTP exception thrown: %s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:796
+msgid "Unrecognized Content-Type provided in request"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:800
+msgid "No Content-Type provided in request"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:804
+msgid "Empty body provided in request"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:912
+#, python-format
+msgid "There is no such action: %s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:915 nova/api/openstack/wsgi.py:932
+#: nova/api/openstack/compute/server_metadata.py:58
+#: nova/api/openstack/compute/server_metadata.py:76
+#: nova/api/openstack/compute/server_metadata.py:101
+#: nova/api/openstack/compute/server_metadata.py:126
+#: nova/api/openstack/compute/contrib/admin_actions.py:211
+#: nova/api/openstack/compute/contrib/evacuate.py:46
+msgid "Malformed request body"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:919
+#, python-format
+msgid "Action: '%(action)s', body: %(body)s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:920
+#, python-format
+msgid "Calling method %s"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:929
+msgid "Unsupported Content-Type"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:941
+msgid "Malformed request url"
+msgstr ""
+
+#: nova/api/openstack/wsgi.py:1172
+#, python-format
+msgid "Returning %(code)s to user: %(explanation)s"
+msgstr ""
+
+#: nova/api/openstack/xmlutil.py:270
+msgid "element is not a child"
+msgstr ""
+
+#: nova/api/openstack/xmlutil.py:419
+msgid "root element selecting a list"
+msgstr ""
+
+#: nova/api/openstack/xmlutil.py:744
+#, python-format
+msgid "Template tree mismatch; adding slave %(slavetag)s to master %(mastertag)s"
+msgstr ""
+
+#: nova/api/openstack/xmlutil.py:863
+msgid "subclasses must implement construct()!"
+msgstr ""
+
+#: nova/api/openstack/compute/extensions.py:39
+msgid "Initializing extension manager."
+msgstr ""
+
+#: nova/api/openstack/compute/flavors.py:111
+#, python-format
+msgid "Invalid is_public filter [%s]"
+msgstr ""
+
+#: nova/api/openstack/compute/flavors.py:130
+#, python-format
+msgid "Invalid minRam filter [%s]"
+msgstr ""
+
+#: nova/api/openstack/compute/flavors.py:137
+#, python-format
+msgid "Invalid minDisk filter [%s]"
+msgstr ""
+
+#: nova/api/openstack/compute/image_metadata.py:36
+#: nova/api/openstack/compute/images.py:141
+#: nova/api/openstack/compute/images.py:157
+msgid "Image not found."
+msgstr ""
+
+#: nova/api/openstack/compute/image_metadata.py:76
+msgid "Incorrect request body format"
+msgstr ""
+
+#: nova/api/openstack/compute/image_metadata.py:80
+#: nova/api/openstack/compute/server_metadata.py:80
+#: nova/api/openstack/compute/contrib/flavorextraspecs.py:85
+msgid "Request body and URI mismatch"
+msgstr ""
+
+#: nova/api/openstack/compute/image_metadata.py:83
+#: nova/api/openstack/compute/server_metadata.py:84
+#: nova/api/openstack/compute/contrib/flavorextraspecs.py:88
+msgid "Request body contains too many items"
+msgstr ""
+
+#: nova/api/openstack/compute/image_metadata.py:109
+msgid "Invalid metadata key"
+msgstr ""
+
+#: nova/api/openstack/compute/images.py:162
+msgid "You are not allowed to delete the image."
+msgstr ""
+
+#: nova/api/openstack/compute/ips.py:68
+msgid "Instance does not exist"
+msgstr ""
+
+#: nova/api/openstack/compute/ips.py:91
+msgid "Instance is not a member of specified network"
+msgstr ""
+
+#: nova/api/openstack/compute/limits.py:161
+#, python-format
+msgid ""
+"Only %(value)s %(verb)s request(s) can be made to %(uri)s every "
+"%(unit_string)s."
+msgstr ""
+
+#: nova/api/openstack/compute/limits.py:288
+msgid "This request was rate-limited."
+msgstr ""
+
+#: nova/api/openstack/compute/server_metadata.py:38
+#: nova/api/openstack/compute/server_metadata.py:122
+#: nova/api/openstack/compute/server_metadata.py:173
+msgid "Server does not exist"
+msgstr ""
+
+#: nova/api/openstack/compute/server_metadata.py:154
+#: nova/api/openstack/compute/server_metadata.py:165
+msgid "Metadata item was not found"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:519
+#: nova/api/openstack/compute/contrib/cells.py:272
+msgid "Invalid changes-since value"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:538
+msgid "Only administrators may list deleted instances"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:557
+#, python-format
+msgid "Flavor '%s' could not be found "
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:574
+#: nova/api/openstack/compute/servers.py:741
+#: nova/api/openstack/compute/servers.py:1011
+#: nova/api/openstack/compute/servers.py:1108
+#: nova/api/openstack/compute/servers.py:1281
+msgid "Instance could not be found"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:593
+msgid "Device name cannot include spaces."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:610
+#, python-format
+msgid "Bad personality format: missing %s"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:613
+msgid "Bad personality format"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:616
+#, python-format
+msgid "Personality content for %s cannot be decoded"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:647
+msgid "Unknown argment : port"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:650
+#, python-format
+msgid "Bad port format: port uuid is not in proper format (%s)"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:660
+#, python-format
+msgid "Bad networks format: network uuid is not in proper format (%s)"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:670
+#, python-format
+msgid "Invalid fixed IP address (%s)"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:683
+#, python-format
+msgid "Duplicate networks (%s) are not allowed"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:689
+#, python-format
+msgid "Bad network format: missing %s"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:692
+msgid "Bad networks format"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:718
+msgid "Userdata content cannot be decoded"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:723
+msgid "accessIPv4 is not proper IPv4 format"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:728
+msgid "accessIPv6 is not proper IPv6 format"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:757
+msgid "Server name is not defined"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:806
+#: nova/api/openstack/compute/servers.py:922
+msgid "Invalid flavorRef provided."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:847
+msgid "min_count must be an integer value"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:850
+msgid "min_count must be > 0"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:856
+msgid "max_count must be an integer value"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:859
+msgid "max_count must be > 0"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:863
+msgid "min_count must be <= max_count"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:917
+msgid "Can not find requested image"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:925
+msgid "Invalid key_name provided."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:999
+msgid "HostId cannot be updated."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1003
+msgid "Personality cannot be updated."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1029
+#: nova/api/openstack/compute/servers.py:1046
+msgid "Instance has not been resized."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1049
+msgid "Flavor used by the instance could not be found."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1065
+msgid "Argument 'type' for reboot is not HARD or SOFT"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1069
+msgid "Missing argument 'type' for reboot"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1091
+msgid "Unable to locate requested flavor."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1094
+msgid "Resize requires a flavor change."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1118
+msgid "Missing imageRef attribute"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1127
+msgid "Invalid imageRef provided."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1154
+msgid "Missing flavorRef attribute"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1167
+msgid "No adminPass was specified"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1171
+#: nova/api/openstack/compute/servers.py:1382
+msgid "Invalid adminPass"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1177
+msgid "Unable to set password on instance"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1186
+msgid "Unable to parse metadata key/value pairs."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1199
+msgid "Resize request has invalid 'flavorRef' attribute."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1202
+msgid "Resize requests require 'flavorRef' attribute."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1220
+#: nova/api/openstack/compute/contrib/aggregates.py:143
+#: nova/api/openstack/compute/contrib/coverage_ext.py:284
+#: nova/api/openstack/compute/contrib/keypairs.py:78
+msgid "Invalid request body"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1226
+msgid "Could not parse imageRef from request."
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1290
+msgid "Cannot find image for rebuild"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1323
+msgid "createImage entity requires name attribute"
+msgstr ""
+
+#: nova/api/openstack/compute/servers.py:1409
+#, python-format
+msgid "Removing options '%(unk_opt_str)s' from query"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:60
+#, python-format
+msgid "Compute.api::pause %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:77
+#, python-format
+msgid "Compute.api::unpause %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:94
+#, python-format
+msgid "compute.api::suspend %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:111
+#, python-format
+msgid "compute.api::resume %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:127
+#, python-format
+msgid "Error in migrate %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:141
+#, python-format
+msgid "Compute.api::reset_network %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:154
+#: nova/api/openstack/compute/contrib/admin_actions.py:170
+#: nova/api/openstack/compute/contrib/admin_actions.py:186
+#: nova/api/openstack/compute/contrib/admin_actions.py:321
+#: nova/api/openstack/compute/contrib/multinic.py:41
+#: nova/api/openstack/compute/contrib/rescue.py:42
+msgid "Server not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:157
+#, python-format
+msgid "Compute.api::inject_network_info %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:173
+#, python-format
+msgid "Compute.api::lock %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:189
+#, python-format
+msgid "Compute.api::unlock %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:219
+#, python-format
+msgid "createBackup entity requires %s attribute"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:223
+msgid "Malformed createBackup entity"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:229
+msgid "createBackup attribute 'rotation' must be an integer"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:232
+msgid "createBackup attribute 'rotation' must be greater than or equal to zero"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:248
+#: nova/api/openstack/compute/contrib/console_output.py:45
+#: nova/api/openstack/compute/contrib/server_diagnostics.py:47
+#: nova/api/openstack/compute/contrib/server_start_stop.py:38
+msgid "Instance not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:278
+msgid "host and block_migration must be specified."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:292
+#, python-format
+msgid "Live migration of instance %(id)s to another host failed"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:295
+#, python-format
+msgid "Live migration of instance %(id)s to host %(host)s failed"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:313
+#, python-format
+msgid "Desired state must be specified. Valid states are: %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/admin_actions.py:324
+#, python-format
+msgid "Compute.api::resetState %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:89
+#, python-format
+msgid "Cannot show aggregate: %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:115
+#, python-format
+msgid "Cannot update aggregate: %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:127
+#, python-format
+msgid "Cannot delete aggregate: %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:140
+#, python-format
+msgid "Aggregates does not have %s action"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:153
+#: nova/api/openstack/compute/contrib/aggregates.py:158
+#, python-format
+msgid "Cannot add host %(host)s in aggregate %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:172
+#: nova/api/openstack/compute/contrib/aggregates.py:176
+#, python-format
+msgid "Cannot remove host %(host)s in aggregate %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/aggregates.py:196
+#, python-format
+msgid "Cannot set metadata %(metadata)s in aggregate %(id)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:102
+msgid "Attach interface"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:109
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:142
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:165
+msgid "Network driver does not support this function."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:113
+msgid "Failed to attach interface"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:121
+msgid "Attachments update is not supported"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/attach_interfaces.py:132
+#, python-format
+msgid "Detach interface %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
+msgid "Must specify id or address"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:193
+msgid "Cell name cannot be empty"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:197
+msgid "Cell name cannot contain '!' or '.'"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:204
+msgid "Cell type must be 'parent' or 'child'"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:224
+#: nova/api/openstack/compute/contrib/cells.py:244
+msgid "No cell information in request"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:229
+msgid "No cell name in request"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cells.py:266
+msgid "Only 'updated_since' and 'project_id' are understood."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/certificates.py:71
+msgid "Only root certificate can be retrieved."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cloudpipe.py:149
+msgid ""
+"Unable to claim IP for VPN instances, ensure it isn't running, and try "
+"again in a few minutes"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/cloudpipe_update.py:41
+#, python-format
+msgid "Unknown action %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/console_output.py:50
+msgid "os-getConsoleOutput malformed or missing from request body"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/console_output.py:57
+msgid "Length in request body must be an integer value"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/console_output.py:65
+msgid "Unable to get console"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/consoles.py:51
+msgid "Instance not yet ready"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:97
+#, python-format
+msgid "Can't connect to service: %s, no portspecified\n"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:116
+msgid "Coverage begin"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:163
+msgid "Coverage not running"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:192
+msgid "Invalid path"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:196
+msgid "No path given for report file"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:203
+msgid "You can't use html reports without combining"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:216
+#, python-format
+msgid "Directory conflict: %s already exists"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:274
+msgid "Python coverage module is not installed."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/coverage_ext.py:282
+#, python-format
+msgid "Coverage doesn't have %s action"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/disk_config.py:43
+#, python-format
+msgid "%s must be either 'MANUAL' or 'AUTO'."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/evacuate.py:58
+msgid "admin password can't be changed on existing disk"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/evacuate.py:66
+msgid "host and onSharedStorage must be specified."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/evacuate.py:77
+#, python-format
+msgid "Error in evacuate, %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
+#, python-format
+msgid "Fixed IP %s has been deleted"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
+#, python-format
+msgid "Fixed IP %s not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/flavor_access.py:76
+#: nova/api/openstack/compute/contrib/flavor_access.py:100
+msgid "Flavor not found."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/flavor_access.py:105
+msgid "Access list not available for public flavors."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/flavor_access.py:117
+msgid "No request body"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/flavorextraspecs.py:55
+msgid "No Request Body"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ip_dns.py:223
+msgid "DNS entries not found."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:129
+#: nova/api/openstack/compute/contrib/floating_ips.py:177
+#, python-format
+msgid "Floating ip not found for id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:162
+#, python-format
+msgid "No more floating ips in pool %s."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:164
+msgid "No more floating ips available."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:189
+#, python-format
+msgid "Floating ip %s has been disassociated"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
+#: nova/api/openstack/compute/contrib/security_groups.py:413
+msgid "Missing parameter dict"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
+msgid "Address not specified"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
+msgid "No nw_info cache associated with instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
+msgid "No fixed ips associated to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
+msgid "floating ip is already associated"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
+msgid "l3driver call to add floating ip failed"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
+msgid "floating ip not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
+msgid "Error. Unable to associate floating ip"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
+msgid "Floating ip is not associated"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
+#, python-format
+msgid "Floating ip %(address)s is not associated with instance %(id)s."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
+#: nova/cmd/manage.py:378
+#, python-format
+msgid "/%s should be specified as single address(es) not in cidr format"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/fping.py:53
+msgid "fping utility is not found."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:183
+#, python-format
+msgid "Invalid update setting: '%s'"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:186
+#, python-format
+msgid "Invalid status: '%s'"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:188
+#, python-format
+msgid "Invalid mode: '%s'"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:190
+msgid "'status' or 'maintenance_mode' needed for host update"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:205
+#, python-format
+msgid "Putting host %(host_name)s in maintenance mode %(mode)s."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:210
+msgid "Virt driver does not implement host maintenance mode."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:223
+#, python-format
+msgid "Enabling host %s."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:225
+#, python-format
+msgid "Disabling host %s."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:230
+msgid "Virt driver does not implement host disabled status."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:246
+msgid "Virt driver does not implement host power management."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hosts.py:332
+msgid "Describe-resource is admin only functionality"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hypervisors.py:183
+#: nova/api/openstack/compute/contrib/hypervisors.py:194
+#, python-format
+msgid "Hypervisor with ID '%s' could not be found."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hypervisors.py:202
+msgid "Virt driver does not implement uptime function."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/hypervisors.py:218
+#: nova/api/openstack/compute/contrib/hypervisors.py:228
+#, python-format
+msgid "No hypervisor matching '%s' could be found."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:57
+#, python-format
+msgid "Invalid timestamp for date %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/keypairs.py:101
+#, python-format
+msgid "Key pair '%s' already exists."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/multinic.py:52
+msgid "Missing 'networkId' argument for addFixedIp"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/multinic.py:68
+msgid "Missing 'address' argument for removeFixedIp"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/multinic.py:77
+#, python-format
+msgid "Unable to find address %r"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/networks_associate.py:23
+#, python-format
+msgid "Disassociating host with network with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/networks_associate.py:27
+#: nova/api/openstack/compute/contrib/networks_associate.py:38
+#: nova/api/openstack/compute/contrib/networks_associate.py:50
+#: nova/api/openstack/compute/contrib/os_networks.py:79
+#: nova/api/openstack/compute/contrib/os_networks.py:89
+#: nova/api/openstack/compute/contrib/os_networks.py:99
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:110
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:132
+msgid "Network not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/networks_associate.py:34
+#, python-format
+msgid "Disassociating project with network with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:74
+#, python-format
+msgid "Disassociating network with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:85
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:106
+#, python-format
+msgid "Showing network with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:95
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:124
+#, python-format
+msgid "Deleting network with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:110
+msgid "Missing network in body"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:114
+msgid "Network label is required"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:118
+msgid "Network cidr or cidr_v6 is required"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:120
+#, python-format
+msgid "Creating network with label %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:136
+#, python-format
+msgid "Associating network %(network)s with project %(project)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:144
+msgid "VLAN support must be enabled"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_networks.py:147
+#, python-format
+msgid "Cannot associate network %(network)s with project %(project)s: %(message)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:121
+msgid "Failed to update usages deallocating network."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:151
+msgid "No CIDR requested"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:157
+msgid "Requested network does not contain enough (2+) usable hosts"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:161
+msgid "CIDR is malformed."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:164
+msgid "Address could not be converted."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:172
+msgid "Quota exceeded, too many networks."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/os_tenant_networks.py:183
+msgid "Create networks failed"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/quotas.py:65
+msgid "Quota limit must be -1 or greater."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/quotas.py:100
+#, python-format
+msgid "Bad key(s) %s in quota_set"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/quotas.py:107
+#, python-format
+msgid "Quota for %s should be integer."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/scheduler_hints.py:38
+msgid "Malformed scheduler_hints attribute"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_group_default_rules.py:129
+#: nova/api/openstack/compute/contrib/security_groups.py:324
+msgid "Not enough parameters to build a valid rule."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_group_default_rules.py:133
+msgid "This default rule already exists."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_group_default_rules.py:154
+#, python-format
+msgid "Showing security_group_default_rule with id %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_group_default_rules.py:158
+msgid "security group default rule not found"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_groups.py:332
+#, python-format
+msgid "Bad prefix for network in cidr %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_groups.py:416
+msgid "Security group not specified"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/security_groups.py:420
+msgid "Security group name cannot be empty"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/server_start_stop.py:46
+msgid "start instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/server_start_stop.py:58
+msgid "stop instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/services.py:123
+msgid "Unknown action"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/services.py:137
+msgid "Unknown service"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/simple_tenant_usage.py:226
+msgid "Invalid start time. The start time cannot occur after the end time."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:75
+#, python-format
+msgid "vol=%s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:187
+#, python-format
+msgid "Delete volume with id: %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:356
+#: nova/api/openstack/compute/contrib/volumes.py:450
+#, python-format
+msgid "Instance %s is not attached."
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:377
+#, python-format
+msgid "Bad volumeId format: volumeId is not in proper format (%s)"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:396
+#, python-format
+msgid "Attach volume %(volume_id)s to instance %(server_id)s at %(device)s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:573
+#, python-format
+msgid "Delete snapshot with id: %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:616
+#, python-format
+msgid "Create snapshot from volume %s"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/volumes.py:620
+#, python-format
+msgid "Invalid value '%s' for force."
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/views/servers.py:186
+msgid "Instance has had its instance_type removed from the DB"
+msgstr ""
+
+#: nova/cells/messaging.py:203
+#, python-format
+msgid "Error processing message locally: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:357 nova/cells/messaging.py:363
+#, python-format
+msgid "destination is %(target_cell)s but routing_path is %(routing_path)s"
+msgstr ""
+
+#: nova/cells/messaging.py:373
+#, python-format
+msgid "Unknown %(cell_type)s when routing to %(target_cell)s"
+msgstr ""
+
+#: nova/cells/messaging.py:397
+#, python-format
+msgid "Error locating next hop for message: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:424
+#, python-format
+msgid "Failed to send message to cell: %(next_hop)s: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:503
+#, python-format
+msgid "Error locating next hops for message: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:523
+#, python-format
+msgid "Error sending message to next hops: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:541
+#, python-format
+msgid "Error waiting for responses from neighbor cells: %(exc)s"
+msgstr ""
+
+#: nova/cells/messaging.py:652
+#, python-format
+msgid "Unknown method '%(method)s' in compute API"
+msgstr ""
+
+#: nova/cells/messaging.py:675
+#, python-format
+msgid "Received capabilities from child cell %(cell_name)s: %(capabilities)s"
+msgstr ""
+
+#: nova/cells/messaging.py:684
+#, python-format
+msgid "Received capacities from child cell %(cell_name)s: %(capacities)s"
+msgstr ""
+
+#: nova/cells/messaging.py:810
+#, python-format
+msgid "Got update for instance %(instance_uuid)s: %(instance)s"
+msgstr ""
+
+#: nova/cells/messaging.py:838
+#, python-format
+msgid "Got update to delete instance %(instance_uuid)s"
+msgstr ""
+
+#: nova/cells/messaging.py:853
+#, python-format
+msgid "Got broadcast to %(delete_type)s delete instance"
+msgstr ""
+
+#: nova/cells/messaging.py:867
+#, python-format
+msgid "Got message to create instance fault: %(instance_fault)s"
+msgstr ""
+
+#: nova/cells/messaging.py:888
+#, python-format
+msgid ""
+"Forcing a sync of instances, project_id=%(projid_str)s, "
+"updated_since=%(since_str)s"
+msgstr ""
+
+#: nova/cells/messaging.py:1072
+#, python-format
+msgid "Updating parents with our capabilities: %(capabs)s"
+msgstr ""
+
+#: nova/cells/messaging.py:1092
+#, python-format
+msgid "Updating parents with our capacities: %(capacities)s"
+msgstr ""
+
+#: nova/cells/scheduler.py:106
+#, python-format
+msgid "Scheduling with routing_path=%(routing_path)s"
+msgstr ""
+
+#: nova/cells/scheduler.py:132
+#, python-format
+msgid ""
+"No cells available when scheduling. Will retry in %(sleep_time)s "
+"second(s)"
+msgstr ""
+
+#: nova/cells/scheduler.py:139
+#, python-format
+msgid "Error scheduling instances %(instance_uuids)s"
+msgstr ""
+
+#: nova/cells/state.py:270
+msgid "Updating cell cache from db."
+msgstr ""
+
+#: nova/cells/state.py:315
+#, python-format
+msgid "Unknown cell '%(cell_name)s' when trying to update capabilities"
+msgstr ""
+
+#: nova/cells/state.py:330
+#, python-format
+msgid "Unknown cell '%(cell_name)s' when trying to update capacities"
+msgstr ""
+
+#: nova/cloudpipe/pipelib.py:48
+msgid "Instance type for vpn instances"
+msgstr ""
+
+#: nova/cloudpipe/pipelib.py:51
+msgid "Template for cloudpipe instance boot script"
+msgstr ""
+
+#: nova/cloudpipe/pipelib.py:54
+msgid "Network to push into openvpn config"
+msgstr ""
+
+#: nova/cloudpipe/pipelib.py:57
+msgid "Netmask to push into openvpn config"
+msgstr ""
+
+#: nova/cloudpipe/pipelib.py:126
+#, python-format
+msgid "Launching VPN for %s"
+msgstr ""
+
+#: nova/cmd/all.py:61 nova/cmd/all.py:67 nova/cmd/all.py:90
+#, python-format
+msgid "Failed to load %s"
+msgstr ""
+
+#: nova/cmd/baremetal_deploy_helper.py:236
+#, python-format
+msgid "start deployment for node %(node_id)s, params %(params)s"
+msgstr ""
+
+#: nova/cmd/baremetal_deploy_helper.py:244
+#, python-format
+msgid "deployment to node %s failed"
+msgstr ""
+
+#: nova/cmd/baremetal_deploy_helper.py:248
+#, python-format
+msgid "deployment to node %s done"
+msgstr ""
+
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
+#, python-format
+msgid "Could not read %s. Re-running with sudo"
+msgstr ""
+
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
+msgid "sudo failed, continuing as if nothing happened"
+msgstr ""
+
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
+msgid "Please re-run nova-manage as root."
+msgstr ""
+
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
+msgid "Command failed, please check log for more info"
+msgstr ""
+
+#: nova/cmd/dhcpbridge.py:47
+msgid "leasing ip"
+msgstr ""
+
+#: nova/cmd/dhcpbridge.py:67
+msgid "releasing ip"
+msgstr ""
+
+#: nova/cmd/dhcpbridge.py:122
+#, python-format
+msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
+msgstr ""
+
+#: nova/cmd/dhcpbridge.py:132
+msgid "Environment variable 'NETWORK_ID' must be set."
+msgstr ""
+
+#: nova/cmd/manage.py:203
+msgid ""
+"The above error may show that the database has not been created.\n"
+"Please create a database using 'nova-manage db sync' before running this "
+"command."
+msgstr ""
+
+#: nova/cmd/manage.py:238
+#, python-format
+msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
+msgstr ""
+
+#: nova/cmd/manage.py:244
+msgid "Quota"
+msgstr ""
+
+#: nova/cmd/manage.py:245
+msgid "Limit"
+msgstr ""
+
+#: nova/cmd/manage.py:246
+msgid "In Use"
+msgstr ""
+
+#: nova/cmd/manage.py:247
+msgid "Reserved"
+msgstr ""
+
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
+#, python-format
+msgid "error: %s"
+msgstr ""
+
+#: nova/cmd/manage.py:295
+msgid "network"
+msgstr ""
+
+#: nova/cmd/manage.py:296
+msgid "IP address"
+msgstr ""
+
+#: nova/cmd/manage.py:297
+msgid "hostname"
+msgstr ""
+
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
+msgid "host"
+msgstr ""
+
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
+msgid "No fixed IP found."
+msgstr ""
+
+#: nova/cmd/manage.py:326
+#, python-format
+msgid "WARNING: fixed ip %s allocated to missing instance"
+msgstr ""
+
+#: nova/cmd/manage.py:385
+#, python-format
+msgid ""
+"Too many IP addresses will be generated. Please increase /%s to reduce "
+"the number generated."
+msgstr ""
+
+#: nova/cmd/manage.py:434
+msgid "No floating IP addresses have been defined."
+msgstr ""
+
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
+msgid "id"
+msgstr ""
+
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
+msgid "IPv4"
+msgstr ""
+
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
+msgid "IPv6"
+msgstr ""
+
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
+msgid "start address"
+msgstr ""
+
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
+msgid "DNS1"
+msgstr ""
+
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
+msgid "DNS2"
+msgstr ""
+
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
+msgid "VlanID"
+msgstr ""
+
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
+#: nova/tests/test_nova_manage.py:219
+msgid "project"
+msgstr ""
+
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
+msgid "uuid"
+msgstr ""
+
+#: nova/cmd/manage.py:511
+msgid "No networks found"
+msgstr ""
+
+#: nova/cmd/manage.py:530
+msgid "Please specify either fixed_range or uuid"
+msgstr ""
+
+#: nova/cmd/manage.py:535
+msgid "UUID is required to delete Quantum Networks"
+msgstr ""
+
+#: nova/cmd/manage.py:538
+msgid "Deleting by fixed_range is not supported with the QuantumManager"
+msgstr ""
+
+#: nova/cmd/manage.py:601
+msgid "instance"
+msgstr ""
+
+#: nova/cmd/manage.py:602
+msgid "node"
+msgstr ""
+
+#: nova/cmd/manage.py:603
+msgid "type"
+msgstr ""
+
+#: nova/cmd/manage.py:604
+msgid "state"
+msgstr ""
+
+#: nova/cmd/manage.py:605
+msgid "launched"
+msgstr ""
+
+#: nova/cmd/manage.py:606
+msgid "image"
+msgstr ""
+
+#: nova/cmd/manage.py:607
+msgid "kernel"
+msgstr ""
+
+#: nova/cmd/manage.py:608
+msgid "ramdisk"
+msgstr ""
+
+#: nova/cmd/manage.py:610
+msgid "user"
+msgstr ""
+
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
+msgid "zone"
+msgstr ""
+
+#: nova/cmd/manage.py:612
+msgid "index"
+msgstr ""
+
+#: nova/cmd/manage.py:657
+msgid "Binary"
+msgstr ""
+
+#: nova/cmd/manage.py:658
+msgid "Host"
+msgstr ""
+
+#: nova/cmd/manage.py:659
+msgid "Zone"
+msgstr ""
+
+#: nova/cmd/manage.py:660
+msgid "Status"
+msgstr ""
+
+#: nova/cmd/manage.py:661
+msgid "State"
+msgstr ""
+
+#: nova/cmd/manage.py:662
+msgid "Updated_At"
+msgstr ""
+
+#: nova/cmd/manage.py:684
+#, python-format
+msgid "Service %(service)s on host %(host)s enabled."
+msgstr ""
+
+#: nova/cmd/manage.py:697
+#, python-format
+msgid "Service %(service)s on host %(host)s disabled."
+msgstr ""
+
+#: nova/cmd/manage.py:764
+msgid "An unexpected error has occurred."
+msgstr ""
+
+#: nova/cmd/manage.py:765
+msgid "[Result]"
+msgstr ""
+
+#: nova/cmd/manage.py:769
+msgid "HOST"
+msgstr ""
+
+#: nova/cmd/manage.py:770
+msgid "PROJECT"
+msgstr ""
+
+#: nova/cmd/manage.py:771
+msgid "cpu"
+msgstr ""
+
+#: nova/cmd/manage.py:772
+msgid "mem(mb)"
+msgstr ""
+
+#: nova/cmd/manage.py:773
+msgid "hdd"
+msgstr ""
+
+#: nova/cmd/manage.py:855
+msgid "Must supply a positive value for max_rows"
+msgstr ""
+
+#: nova/cmd/manage.py:893
+msgid "Must supply valid parameters to create instance_type"
+msgstr ""
+
+#: nova/cmd/manage.py:897
+msgid "Instance Type exists."
+msgstr ""
+
+#: nova/cmd/manage.py:898
+msgid "Please ensure instance_type name and flavorid are unique."
+msgstr ""
+
+#: nova/cmd/manage.py:900
+msgid "Currently defined instance_type names and flavorids:"
+msgstr ""
+
+#: nova/cmd/manage.py:905
+msgid "Unknown error"
+msgstr ""
+
+#: nova/cmd/manage.py:908
+#, python-format
+msgid "%s created"
+msgstr ""
+
+#: nova/cmd/manage.py:916
+msgid "Valid instance type name is required"
+msgstr ""
+
+#: nova/cmd/manage.py:919
+#, python-format
+msgid "DB Error: %s"
+msgstr ""
+
+#: nova/cmd/manage.py:924
+#, python-format
+msgid "%s deleted"
+msgstr ""
+
+#: nova/cmd/manage.py:960
+#, python-format
+msgid "Key %(key)s set to %(value)s on instance type %(name)s"
+msgstr ""
+
+#: nova/cmd/manage.py:982
+#, python-format
+msgid "Key %(key)s on instance type %(name)s unset"
+msgstr ""
+
+#: nova/cmd/manage.py:1026
+#, python-format
+msgid "Hypervisor: %s"
+msgstr ""
+
+#: nova/cmd/manage.py:1067
+#, python-format
+msgid "Line %(linenum)d : %(line)s"
+msgstr ""
+
+#: nova/cmd/manage.py:1069
+msgid "No errors in logfiles!"
+msgstr ""
+
+#: nova/cmd/manage.py:1081
+msgid "Unable to find system log file!"
+msgstr ""
+
+#: nova/cmd/manage.py:1085
+#, python-format
+msgid "Last %s nova syslog entries:-"
+msgstr ""
+
+#: nova/cmd/manage.py:1094
+msgid "No nova entries in syslog!"
+msgstr ""
+
+#: nova/compute/api.py:281
+msgid "Cannot run any more instances of this type."
+msgstr ""
+
+#: nova/compute/api.py:288
+#, python-format
+msgid "Can only run %s more instances of this type."
+msgstr ""
+
+#: nova/compute/api.py:297
+#, python-format
+msgid ""
+"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
+"instances. %(msg)s"
+msgstr ""
+
+#: nova/compute/api.py:317
+#, python-format
+msgid ""
+"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
+"properties"
+msgstr ""
+
+#: nova/compute/api.py:327
+msgid "Metadata property key blank"
+msgstr ""
+
+#: nova/compute/api.py:331
+msgid "Metadata property key greater than 255 characters"
+msgstr ""
+
+#: nova/compute/api.py:335
+msgid "Metadata property value greater than 255 characters"
+msgstr ""
+
+#: nova/compute/api.py:468
+msgid "Failed to set instance name using multi_instance_display_name_template."
+msgstr ""
+
+#: nova/compute/api.py:508
+msgid "Cannot attach one or more volumes to multiple instances"
+msgstr ""
+
+#: nova/compute/api.py:622
+#, python-format
+msgid "Going to run %s instances..."
+msgstr ""
+
+#: nova/compute/api.py:738
+#, python-format
+msgid "bdm %s"
+msgstr ""
+
+#: nova/compute/api.py:765
+#, python-format
+msgid "block_device_mapping %s"
+msgstr ""
+
+#: nova/compute/api.py:1036
+msgid "instance termination disabled"
+msgstr ""
+
+#: nova/compute/api.py:1172
+#, python-format
+msgid "instance type %(old_inst_type_id)d not found"
+msgstr ""
+
+#: nova/compute/api.py:1178
+msgid "going to delete a resizing instance"
+msgstr ""
+
+#: nova/compute/api.py:1188
+#, python-format
+msgid "instance's host %s is down, deleting from database"
+msgstr ""
+
+#: nova/compute/api.py:1232
+msgid "Going to try to soft delete instance"
+msgstr ""
+
+#: nova/compute/api.py:1256
+msgid "Going to try to terminate instance"
+msgstr ""
+
+#: nova/compute/api.py:1306
+msgid "Going to try to stop instance"
+msgstr ""
+
+#: nova/compute/api.py:1323
+msgid "Going to try to start instance"
+msgstr ""
+
+#: nova/compute/api.py:1396
+#, python-format
+msgid "Searching by: %s"
+msgstr ""
+
+#: nova/compute/api.py:1633
+#, python-format
+msgid "snapshot for %s"
+msgstr ""
+
+#: nova/compute/api.py:1984
+msgid "flavor_id is None. Assuming migration."
+msgstr ""
+
+#: nova/compute/api.py:1993
+#, python-format
+msgid ""
+"Old instance type %(current_instance_type_name)s, new instance type "
+"%(new_instance_type_name)s"
+msgstr ""
+
+#: nova/compute/api.py:2035
+#, python-format
+msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
+msgstr ""
+
+#: nova/compute/api.py:2175
+msgid "Cannot rescue a volume-backed instance"
+msgstr ""
+
+#: nova/compute/api.py:2282
+msgid "Locking"
+msgstr ""
+
+#: nova/compute/api.py:2290
+msgid "Unlocking"
+msgstr ""
+
+#: nova/compute/api.py:2362
+msgid "Volume must be attached in order to detach."
+msgstr ""
+
+#: nova/compute/api.py:2475
+#, python-format
+msgid "Going to try to live migrate instance to %s"
+msgstr ""
+
+#: nova/compute/api.py:2494
+msgid "vm evacuation scheduled"
+msgstr ""
+
+#: nova/compute/api.py:2498
+#, python-format
+msgid ""
+"Instance compute service state on %(inst_host)s expected to be down, but "
+"it was up."
+msgstr ""
+
+#: nova/compute/api.py:2745
+msgid "Keypair name contains unsafe characters"
+msgstr ""
+
+#: nova/compute/api.py:2749
+msgid "Keypair name must be between 1 and 255 characters long"
+msgstr ""
+
+#: nova/compute/api.py:2845
+#, python-format
+msgid "Security group %s is not a string or unicode"
+msgstr ""
+
+#: nova/compute/api.py:2848
+#, python-format
+msgid "Security group %s cannot be empty."
+msgstr ""
+
+#: nova/compute/api.py:2856
+#, python-format
+msgid ""
+"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
+"limited to '%(allowed)'."
+msgstr ""
+
+#: nova/compute/api.py:2862
+#, python-format
+msgid "Security group %s should not be greater than 255 characters."
+msgstr ""
+
+#: nova/compute/api.py:2880
+msgid "Quota exceeded, too many security groups."
+msgstr ""
+
+#: nova/compute/api.py:2883
+#, python-format
+msgid "Create Security Group %s"
+msgstr ""
+
+#: nova/compute/api.py:2890
+#, python-format
+msgid "Security group %s already exists"
+msgstr ""
+
+#: nova/compute/api.py:2954
+#, python-format
+msgid "Unable to delete system group '%s'"
+msgstr ""
+
+#: nova/compute/api.py:2959
+msgid "Security group is still in use"
+msgstr ""
+
+#: nova/compute/api.py:2967
+msgid "Failed to update usages deallocating security group"
+msgstr ""
+
+#: nova/compute/api.py:2970
+#, python-format
+msgid "Delete security group %s"
+msgstr ""
+
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
+#, python-format
+msgid "Rule (%s) not found"
+msgstr ""
+
+#: nova/compute/api.py:3063
+msgid "Quota exceeded, too many security group rules."
+msgstr ""
+
+#: nova/compute/api.py:3066
+#, python-format
+msgid "Authorize security group ingress %s"
+msgstr ""
+
+#: nova/compute/api.py:3075
+#, python-format
+msgid "Revoke security group ingress %s"
+msgstr ""
+
+#: nova/compute/api.py:3128
+msgid "Security group id should be integer"
+msgstr ""
+
+#: nova/compute/claims.py:91 nova/compute/claims.py:214
+#, python-format
+msgid "Aborting claim: %s"
+msgstr ""
+
+#: nova/compute/claims.py:113
+#, python-format
+msgid ""
+"Attempting claim: memory %(memory_mb)d MB, disk %(disk_gb)d GB, VCPUs "
+"%(vcpus)d"
+msgstr ""
+
+#: nova/compute/claims.py:125
+msgid "Claim successful"
+msgstr ""
+
+#: nova/compute/claims.py:127
+msgid "Claim failed"
+msgstr ""
+
+#: nova/compute/claims.py:132
+msgid "Memory"
+msgstr ""
+
+#: nova/compute/claims.py:141
+msgid "Disk"
+msgstr ""
+
+#: nova/compute/claims.py:150
+msgid "CPU"
+msgstr ""
+
+#: nova/compute/claims.py:162
+#, python-format
+msgid "Total %(type_)s: %(total)d %(unit)s, used: %(used)d %(unit)s"
+msgstr ""
+
+#: nova/compute/claims.py:167
+#, python-format
+msgid "%(type_)s limit not specified, defaulting to unlimited"
+msgstr ""
+
+#: nova/compute/claims.py:174
+#, python-format
+msgid "%(type_)s limit: %(limit)d %(unit)s, free: %(free)d %(unit)s"
+msgstr ""
+
+#: nova/compute/claims.py:181
+#, python-format
+msgid ""
+"Unable to claim resources. Free %(type_)s %(free)d %(unit)s < requested "
+"%(requested)d %(unit)s"
+msgstr ""
+
+#: nova/compute/flavors.py:96
+msgid "names can only contain [a-zA-Z0-9_.- ]"
+msgstr ""
+
+#: nova/compute/flavors.py:105
+#, python-format
+msgid "'%s' argument must be a positive integer"
+msgstr ""
+
+#: nova/compute/flavors.py:113
+msgid "'rxtx_factor' argument must be a positive float"
+msgstr ""
+
+#: nova/compute/flavors.py:121
+#, python-format
+msgid "'%s' argument must be greater than 0"
+msgstr ""
+
+#: nova/compute/flavors.py:131
+msgid "is_public must be a boolean"
+msgstr ""
+
+#: nova/compute/flavors.py:138
+#, python-format
+msgid "DB error: %s"
+msgstr ""
+
+#: nova/compute/flavors.py:148
+#, python-format
+msgid "Instance type %s not found for deletion"
+msgstr ""
+
+#: nova/compute/manager.py:206
+msgid "Possibly task preempted."
+msgstr ""
+
+#: nova/compute/manager.py:364
+#, python-format
+msgid "%(nodename)s is not a valid node managed by this compute host."
+msgstr ""
+
+#: nova/compute/manager.py:393
+msgid "Instance has been destroyed from under us while trying to set it to ERROR"
+msgstr ""
+
+#: nova/compute/manager.py:408
+#, python-format
+msgid "Instance %(uuid)s found in the hypervisor, but not in the database"
+msgstr ""
+
+#: nova/compute/manager.py:424
+#, python-format
+msgid ""
+"Instance %(driver_instance)s found in the hypervisor, but not in the "
+"database"
+msgstr ""
+
+#: nova/compute/manager.py:445
+#, python-format
+msgid ""
+"Deleting instance as its host (%(instance_host)s) is not equal to our "
+"host (%(our_host)s)."
+msgstr ""
+
+#: nova/compute/manager.py:460
+msgid "Instance has been marked deleted already, removing it from the hypervisor."
+msgstr ""
+
+#: nova/compute/manager.py:481
+msgid ""
+"Hypervisor driver does not support instance shared storage check, "
+"assuming it's not on shared storage"
+msgstr ""
+
+#: nova/compute/manager.py:487
+msgid "Failed to check if instance shared"
+msgstr ""
+
+#: nova/compute/manager.py:530
+msgid "Failed to revert crashed migration"
+msgstr ""
+
+#: nova/compute/manager.py:533
+msgid "Instance found in migrating state during startup. Resetting task_state"
+msgstr ""
+
+#: nova/compute/manager.py:544
+#, python-format
+msgid "Current state is %(drv_state)s, state in DB is %(db_state)s."
+msgstr ""
+
+#: nova/compute/manager.py:549
+msgid "Rebooting instance after nova-compute restart."
+msgstr ""
+
+#: nova/compute/manager.py:563
+msgid "Hypervisor driver does not support resume guests"
+msgstr ""
+
+#: nova/compute/manager.py:568
+msgid "Failed to resume instance"
+msgstr ""
+
+#: nova/compute/manager.py:578
+msgid "Hypervisor driver does not support firewall rules"
+msgstr ""
+
+#: nova/compute/manager.py:582
+#, python-format
+msgid "Lifecycle event %(state)d on VM %(uuid)s"
+msgstr ""
+
+#: nova/compute/manager.py:598
+#, python-format
+msgid "Unexpected power state %d"
+msgstr ""
+
+#: nova/compute/manager.py:610
+#, python-format
+msgid "Ignoring event %s"
+msgstr ""
+
+#: nova/compute/manager.py:648
+msgid "Checking state"
+msgstr ""
+
+#: nova/compute/manager.py:746
+#, python-format
+msgid "Volume id: %s finished being created but was not set as 'available'"
+msgstr ""
+
+#: nova/compute/manager.py:763
+#, python-format
+msgid "Setting up bdm %s"
+msgstr ""
+
+#: nova/compute/manager.py:863
+msgid "Success"
+msgstr ""
+
+#: nova/compute/manager.py:886
+msgid "Instance disappeared before we could start it"
+msgstr ""
+
+#: nova/compute/manager.py:907 nova/compute/manager.py:2385
+#, python-format
+msgid "No node specified, defaulting to %(node)s"
+msgstr ""
+
+#: nova/compute/manager.py:949
+msgid "Failed to dealloc network for deleted instance"
+msgstr ""
+
+#: nova/compute/manager.py:955
+msgid "Instance was deleted during spawn."
+msgstr ""
+
+#: nova/compute/manager.py:983
+#, python-format
+msgid "Error: %s"
+msgstr ""
+
+#: nova/compute/manager.py:1000
+msgid "Clean up resource before rescheduling."
+msgstr ""
+
+#: nova/compute/manager.py:1025 nova/compute/manager.py:2439
+msgid "Error trying to reschedule"
+msgstr ""
+
+#: nova/compute/manager.py:1038
+msgid "Retry info not present, will not reschedule"
+msgstr ""
+
+#: nova/compute/manager.py:1043
+msgid "No request spec, will not reschedule"
+msgstr ""
+
+#: nova/compute/manager.py:1049
+#, python-format
+msgid "Re-scheduling %(method)s: attempt %(num)d"
+msgstr ""
+
+#: nova/compute/manager.py:1078
+msgid "Instance build timed out. Set to error state."
+msgstr ""
+
+#: nova/compute/manager.py:1129
+#, python-format
+msgid ""
+"image_id=%(image_id)s, image_size_bytes=%(size_bytes)d, "
+"allowed_size_bytes=%(allowed_size_bytes)d"
+msgstr ""
+
+#: nova/compute/manager.py:1135
+#, python-format
+msgid ""
+"Image '%(image_id)s' size %(size_bytes)d exceeded instance_type allowed "
+"size %(allowed_size_bytes)d"
+msgstr ""
+
+#: nova/compute/manager.py:1145
+msgid "Starting instance..."
+msgstr ""
+
+#: nova/compute/manager.py:1171
+msgid "Instance failed network setup"
+msgstr ""
+
+#: nova/compute/manager.py:1174
+#, python-format
+msgid "Instance network_info: |%s|"
+msgstr ""
+
+#: nova/compute/manager.py:1185
+msgid "Instance failed block device setup"
+msgstr ""
+
+#: nova/compute/manager.py:1204
+msgid "Instance failed to spawn"
+msgstr ""
+
+#: nova/compute/manager.py:1255
+msgid "Deallocating network for instance"
+msgstr ""
+
+#: nova/compute/manager.py:1326
+#, python-format
+msgid "%(action_str)s instance"
+msgstr ""
+
+#: nova/compute/manager.py:1342
+msgid "Failed to deallocate network for instance."
+msgstr ""
+
+#: nova/compute/manager.py:1363
+#, python-format
+msgid "Ignoring DiskNotFound: %s"
+msgstr ""
+
+#: nova/compute/manager.py:1366
+#, python-format
+msgid "Ignoring VolumeNotFound: %s"
+msgstr ""
+
+#: nova/compute/manager.py:1373
+#, python-format
+msgid "terminating bdm %s"
+msgstr ""
+
+#: nova/compute/manager.py:1421
+#, python-format
+msgid "Ignoring volume cleanup failure due to %s"
+msgstr ""
+
+#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
+#: nova/compute/manager.py:4124
+#, python-format
+msgid "%s. Setting instance vm_state to ERROR"
+msgstr ""
+
+#: nova/compute/manager.py:1626
+msgid "Rebuilding instance"
+msgstr ""
+
+#: nova/compute/manager.py:1639
+msgid "Invalid state of instance files on shared storage"
+msgstr ""
+
+#: nova/compute/manager.py:1643
+msgid "disk on shared storage, recreating using existing disk"
+msgstr ""
+
+#: nova/compute/manager.py:1647
+#, python-format
+msgid "disk not on shared storagerebuilding from: '%s'"
+msgstr ""
+
+#: nova/compute/manager.py:1731
+#, python-format
+msgid "bringing vm to original state: '%s'"
+msgstr ""
+
+#: nova/compute/manager.py:1763
+#, python-format
+msgid "Detaching from volume api: %s"
+msgstr ""
+
+#: nova/compute/manager.py:1781
+msgid "Rebooting instance"
+msgstr ""
+
+#: nova/compute/manager.py:1806
+#, python-format
+msgid ""
+"trying to reboot a non-running instance: (state: %(state)s expected: "
+"%(running)s)"
+msgstr ""
+
+#: nova/compute/manager.py:1822
+#, python-format
+msgid "Cannot reboot instance: %(exc)s"
+msgstr ""
+
+#: nova/compute/manager.py:1835
+msgid "Instance disappeared during reboot"
+msgstr ""
+
+#: nova/compute/manager.py:1862
+msgid "instance snapshotting"
+msgstr ""
+
+#: nova/compute/manager.py:1868
+#, python-format
+msgid ""
+"trying to snapshot a non-running instance: (state: %(state)s expected: "
+"%(running)s)"
+msgstr ""
+
+#: nova/compute/manager.py:1929
+#, python-format
+msgid "Found %(num_images)d images (rotation: %(rotation)d)"
+msgstr ""
+
+#: nova/compute/manager.py:1936
+#, python-format
+msgid "Rotating out %d backups"
+msgstr ""
+
+#: nova/compute/manager.py:1941
+#, python-format
+msgid "Deleting image %s"
+msgstr ""
+
+#: nova/compute/manager.py:1969
+#, python-format
+msgid "Failed to set admin password. Instance %s is not running"
+msgstr ""
+
+#: nova/compute/manager.py:1976
+msgid "Root password set"
+msgstr ""
+
+#: nova/compute/manager.py:1983
+msgid "set_admin_password is not implemented by this driver or guest instance."
+msgstr ""
+
+#: nova/compute/manager.py:1998
+#, python-format
+msgid "set_admin_password failed: %s"
+msgstr ""
+
+#: nova/compute/manager.py:2005
+msgid "error setting admin password"
+msgstr ""
+
+#: nova/compute/manager.py:2018
+#, python-format
+msgid ""
+"trying to inject a file into a non-running (state: "
+"%(current_power_state)s expected: %(expected_state)s)"
+msgstr ""
+
+#: nova/compute/manager.py:2022
+#, python-format
+msgid "injecting file to %(path)s"
+msgstr ""
+
+#: nova/compute/manager.py:2042
+msgid ""
+"Unable to find a different image to use for rescue VM, using instance's "
+"current image"
+msgstr ""
+
+#: nova/compute/manager.py:2055
+msgid "Rescuing"
+msgstr ""
+
+#: nova/compute/manager.py:2074
+msgid "Error trying to Rescue Instance"
+msgstr ""
+
+#: nova/compute/manager.py:2078
+#, python-format
+msgid "Driver Error: %s"
+msgstr ""
+
+#: nova/compute/manager.py:2096
+msgid "Unrescuing"
+msgstr ""
+
+#: nova/compute/manager.py:2117
+#, python-format
+msgid "Changing instance metadata according to %(diff)r"
+msgstr ""
+
+#: nova/compute/manager.py:2343
+msgid "Instance has no source host"
+msgstr ""
+
+#: nova/compute/manager.py:2349
+msgid "destination same as source!"
+msgstr ""
+
+#: nova/compute/manager.py:2366
+msgid "Migrating"
+msgstr ""
+
+#: nova/compute/manager.py:2612
+#, python-format
+msgid "Failed to rollback quota for failed finish_resize: %(qr_error)s"
+msgstr ""
+
+#: nova/compute/manager.py:2675
+msgid "Pausing"
+msgstr ""
+
+#: nova/compute/manager.py:2693
+msgid "Unpausing"
+msgstr ""
+
+#: nova/compute/manager.py:2731
+msgid "Retrieving diagnostics"
+msgstr ""
+
+#: nova/compute/manager.py:2762
+msgid "Resuming"
+msgstr ""
+
+#: nova/compute/manager.py:2782
+msgid "Reset network"
+msgstr ""
+
+#: nova/compute/manager.py:2787
+msgid "Inject network info"
+msgstr ""
+
+#: nova/compute/manager.py:2790
+#, python-format
+msgid "network_info to inject: |%s|"
+msgstr ""
+
+#: nova/compute/manager.py:2807
+msgid "Get console output"
+msgstr ""
+
+#: nova/compute/manager.py:2834
+msgid "Getting vnc console"
+msgstr ""
+
+#: nova/compute/manager.py:2869
+msgid "Getting spice console"
+msgstr ""
+
+#: nova/compute/manager.py:2916
+#, python-format
+msgid "Booting with volume %(volume_id)s at %(mountpoint)s"
+msgstr ""
+
+#: nova/compute/manager.py:2967
+#, python-format
+msgid "Attaching volume %(volume_id)s to %(mountpoint)s"
+msgstr ""
+
+#: nova/compute/manager.py:2976
+#, python-format
+msgid ""
+"Failed to connect to volume %(volume_id)s while attaching at "
+"%(mountpoint)s"
+msgstr ""
+
+#: nova/compute/manager.py:2991
+#, python-format
+msgid "Failed to attach volume %(volume_id)s at %(mountpoint)s"
+msgstr ""
+
+#: nova/compute/manager.py:3021
+#, python-format
+msgid "Detach volume %(volume_id)s from mountpoint %(mp)s"
+msgstr ""
+
+#: nova/compute/manager.py:3031
+msgid "Detaching volume from unknown instance"
+msgstr ""
+
+#: nova/compute/manager.py:3038
+#, python-format
+msgid "Failed to detach volume %(volume_id)s from %(mp)s"
+msgstr ""
+
+#: nova/compute/manager.py:3062
+msgid "Updating volume usage cache with totals"
+msgstr ""
+
+#: nova/compute/manager.py:3100
+#, python-format
+msgid "allocate_port_for_instance returned %(ports)s ports"
+msgstr ""
+
+#: nova/compute/manager.py:3120
+#, python-format
+msgid "Port %(port_id)s is not attached"
+msgstr ""
+
+#: nova/compute/manager.py:3134
+#, python-format
+msgid "Host %(host)s not found"
+msgstr ""
+
+#: nova/compute/manager.py:3278
+#, python-format
+msgid "Pre live migration failed at %(dest)s"
+msgstr ""
+
+#: nova/compute/manager.py:3306
+msgid "_post_live_migration() is started.."
+msgstr ""
+
+#: nova/compute/manager.py:3361
+#, python-format
+msgid "Migrating instance to %(dest)s finished successfully."
+msgstr ""
+
+#: nova/compute/manager.py:3363
+msgid ""
+"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
+"with matching name.\" This error can be safely ignored."
+msgstr ""
+
+#: nova/compute/manager.py:3377
+msgid "Post operation of migration started"
+msgstr ""
+
+#: nova/compute/manager.py:3406
+#, python-format
+msgid "Failed to get compute_info for %s"
+msgstr ""
+
+#: nova/compute/manager.py:3525
+msgid "Updated the info_cache for instance"
+msgstr ""
+
+#: nova/compute/manager.py:3570
+#, python-format
+msgid ""
+"Found %(migration_count)d unconfirmed migrations older than "
+"%(confirm_window)d seconds"
+msgstr ""
+
+#: nova/compute/manager.py:3576
+#, python-format
+msgid "Setting migration %(migration_id)s to error: %(reason)s"
+msgstr ""
+
+#: nova/compute/manager.py:3585
+#, python-format
+msgid ""
+"Automatically confirming migration %(migration_id)s for instance "
+"%(instance_uuid)s"
+msgstr ""
+
+#: nova/compute/manager.py:3592
+#, python-format
+msgid "Instance %(instance_uuid)s not found"
+msgstr ""
+
+#: nova/compute/manager.py:3596
+msgid "In ERROR state"
+msgstr ""
+
+#: nova/compute/manager.py:3603
+#, python-format
+msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
+msgstr ""
+
+#: nova/compute/manager.py:3612
+#, python-format
+msgid "Error auto-confirming resize: %(e)s. Will retry later."
+msgstr ""
+
+#: nova/compute/manager.py:3629
+#, python-format
+msgid ""
+"Running instance usage audit for host %(host)s from %(begin_time)s to "
+"%(end_time)s. %(number_instances)s instances."
+msgstr ""
+
+#: nova/compute/manager.py:3648
+#, python-format
+msgid "Failed to generate usage audit for instance on host %s"
+msgstr ""
+
+#: nova/compute/manager.py:3672
+msgid "Updating bandwidth usage cache"
+msgstr ""
+
+#: nova/compute/manager.py:3789
+msgid "Updating volume usage cache"
+msgstr ""
+
+#: nova/compute/manager.py:3806
+msgid "Updating host status"
+msgstr ""
+
+#: nova/compute/manager.py:3833
+#, python-format
+msgid ""
+"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
+"the hypervisor."
+msgstr ""
+
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
+msgid "During sync_power_state the instance has a pending task. Skip."
+msgstr ""
+
+#: nova/compute/manager.py:3875
+#, python-format
+msgid ""
+"During the sync_power process the instance has moved from host %(src)s to"
+" host %(dst)s"
+msgstr ""
+
+#: nova/compute/manager.py:3913
+msgid "Instance shutdown by itself. Calling the stop API."
+msgstr ""
+
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
+msgid "error during stop() in sync_power_state."
+msgstr ""
+
+#: nova/compute/manager.py:3929
+msgid "Instance is suspended unexpectedly. Calling the stop API."
+msgstr ""
+
+#: nova/compute/manager.py:3945
+msgid "Instance is paused unexpectedly. Ignore."
+msgstr ""
+
+#: nova/compute/manager.py:3951
+msgid "Instance is unexpectedly not found. Ignore."
+msgstr ""
+
+#: nova/compute/manager.py:3957
+msgid "Instance is not stopped. Calling the stop API."
+msgstr ""
+
+#: nova/compute/manager.py:3973
+msgid "Instance is not (soft-)deleted."
+msgstr ""
+
+#: nova/compute/manager.py:3981
+msgid "CONF.reclaim_instance_interval <= 0, skipping..."
+msgstr ""
+
+#: nova/compute/manager.py:4001
+msgid "Reclaiming deleted instance"
+msgstr ""
+
+#: nova/compute/manager.py:4028
+#, python-format
+msgid "Deleting orphan compute node %s"
+msgstr ""
+
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
+#, python-format
+msgid "No service record for host %s"
+msgstr ""
+
+#: nova/compute/manager.py:4079
+#, python-format
+msgid ""
+"Detected instance with name label '%(name)s' which is marked as DELETED "
+"but still present on host."
+msgstr ""
+
+#: nova/compute/manager.py:4086
+#, python-format
+msgid ""
+"Destroying instance with name label '%(name)s' which is marked as DELETED"
+" but still present on host."
+msgstr ""
+
+#: nova/compute/manager.py:4093
+#, python-format
+msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:92
+msgid ""
+"Host field should not be set on the instance until resources have been "
+"claimed."
+msgstr ""
+
+#: nova/compute/resource_tracker.py:97
+msgid ""
+"Node field should be not be set on the instance until resources have been"
+" claimed."
+msgstr ""
+
+#: nova/compute/resource_tracker.py:244
+msgid "Auditing locally available compute resources"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:249
+msgid ""
+"Virt driver does not support 'get_available_resource' Compute tracking "
+"is disabled."
+msgstr ""
+
+#: nova/compute/resource_tracker.py:301
+#, python-format
+msgid "Compute_service record created for %(host)s:%(node)s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:307
+#, python-format
+msgid "Compute_service record updated for %(host)s:%(node)s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:331
+#, python-format
+msgid "Hypervisor: free ram (MB): %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:332
+#, python-format
+msgid "Hypervisor: free disk (GB): %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:337
+#, python-format
+msgid "Hypervisor: free VCPUs: %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:339
+msgid "Hypervisor: VCPU information unavailable"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:346
+#, python-format
+msgid "Free ram (MB): %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:347
+#, python-format
+msgid "Free disk (GB): %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:352
+#, python-format
+msgid "Free VCPUS: %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:354
+msgid "Free VCPU information unavailable"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:383
+#, python-format
+msgid "Updating from migration %s"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:443
+msgid "Instance not resizing, skipping migration."
+msgstr ""
+
+#: nova/compute/resource_tracker.py:458
+msgid "InstanceType could not be found, skipping migration."
+msgstr ""
+
+#: nova/compute/resource_tracker.py:542
+#, python-format
+msgid ""
+"Detected running orphan instance: %(uuid)s (consuming %(memory_mb)s MB "
+"memory"
+msgstr ""
+
+#: nova/compute/resource_tracker.py:555
+#, python-format
+msgid "Missing keys: %s"
+msgstr ""
+
+#: nova/compute/rpcapi.py:51
+msgid "No compute host specified"
+msgstr ""
+
+#: nova/compute/rpcapi.py:54
+#, python-format
+msgid "Unable to find host for Instance %s"
+msgstr ""
+
+#: nova/compute/utils.py:141
+#, python-format
+msgid "Using %(prefix)s instead of %(req_prefix)s"
+msgstr ""
+
+#: nova/conductor/api.py:380
+msgid ""
+"Timed out waiting for nova-conductor. Is it running? Or did this service "
+"start before nova-conductor?"
+msgstr ""
+
+#: nova/conductor/manager.py:91
+#, python-format
+msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s"
+msgstr ""
+
+#: nova/conductor/manager.py:262
+msgid "Invalid block_device_mapping_destroy invocation"
+msgstr ""
+
+#: nova/console/manager.py:81 nova/console/vmrc_manager.py:63
+msgid "Adding console"
+msgstr ""
+
+#: nova/console/manager.py:101 nova/console/vmrc_manager.py:113
+#, python-format
+msgid "Tried to remove non-existent console %(console_id)s."
+msgstr ""
+
+#: nova/console/vmrc_manager.py:116
+#, python-format
+msgid "Removing console %(console_id)s."
+msgstr ""
+
+#: nova/console/websocketproxy.py:54
+msgid "Invalid Token"
+msgstr ""
+
+#: nova/console/websocketproxy.py:73
+msgid "Invalid Connection Info"
+msgstr ""
+
+#: nova/console/xvp.py:100
+msgid "Rebuilding xvp conf"
+msgstr ""
+
+#: nova/console/xvp.py:119
+#, python-format
+msgid "Re-wrote %s"
+msgstr ""
+
+#: nova/console/xvp.py:124
+msgid "Failed to write configuration file"
+msgstr ""
+
+#: nova/console/xvp.py:127
+msgid "Stopping xvp"
+msgstr ""
+
+#: nova/console/xvp.py:140
+msgid "Starting xvp"
+msgstr ""
+
+#: nova/console/xvp.py:147
+#, python-format
+msgid "Error starting xvp: %s"
+msgstr ""
+
+#: nova/console/xvp.py:150
+msgid "Restarting xvp"
+msgstr ""
+
+#: nova/console/xvp.py:152
+msgid "xvp not running..."
+msgstr ""
+
+#: nova/console/xvp.py:203
+msgid "Failed to run xvp."
+msgstr ""
+
+#: nova/consoleauth/manager.py:89
+#, python-format
+msgid "Received Token: %(token)s, %(token_dict)s)"
+msgstr ""
+
+#: nova/consoleauth/manager.py:113
+#, python-format
+msgid "Checking Token: %(token)s, %(token_valid)s)"
+msgstr ""
+
+#: nova/db/api.py:592
+msgid "Failed to notify cells of instance destroy"
+msgstr ""
+
+#: nova/db/api.py:673 nova/db/api.py:694
+msgid "Failed to notify cells of instance update"
+msgstr ""
+
+#: nova/db/api.py:734
+msgid "Failed to notify cells of instance info cache update"
+msgstr ""
+
+#: nova/db/api.py:1456
+msgid "Failed to notify cells of bw_usage update"
+msgstr ""
+
+#: nova/db/api.py:1591
+msgid "Failed to notify cells of instance fault"
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:157
+#, python-format
+msgid "Deadlock detected when running '%(func_name)s': Retrying..."
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:192
+msgid "model or base_model parameter should be subclass of NovaBase"
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#, python-format
+msgid "Unrecognized read_deleted value '%s'"
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:1408
+#, python-format
+msgid ""
+"Unknown osapi_compute_unique_server_name_scope value: %s Flag must be "
+"empty, \"global\" or \"project\""
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:1546
+#, python-format
+msgid "Invalid instance id %s in request"
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:2836
+#, python-format
+msgid "Change will make usage less than 0 for the following resources: %(unders)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/api.py:4344
+#, python-format
+msgid ""
+"Volume(%s) has lower stats then what is in the database. Instance must "
+"have been rebooted or crashed. Updating totals."
+msgstr ""
+
+#: nova/db/sqlalchemy/migration.py:69
+#: nova/virt/baremetal/db/sqlalchemy/migration.py:66
+msgid "version should be an integer"
+msgstr ""
+
+#: nova/db/sqlalchemy/migration.py:96
+#: nova/virt/baremetal/db/sqlalchemy/migration.py:94
+msgid "Upgrade DB using Essex release first."
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:53
+#, python-format
+msgid ""
+"Please specify column %s in col_name_col_instance param. It is required "
+"because column has unsupported type by sqlite)."
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:59
+#, python-format
+msgid ""
+"col_name_col_instance param has wrong type of column instance for column "
+"%s It should be instance of sqlalchemy.Column."
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:161
+#, python-format
+msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
+#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
+msgid "Exception while creating table."
+msgstr ""
+
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
+#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
+msgid "volume_usage_cache table not dropped"
+msgstr ""
+
+#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:77
+#, python-format
+msgid "table '%s' not dropped"
+msgstr ""
+
+#: nova/image/glance.py:187
+#, python-format
+msgid ""
+"Error contacting glance server '%(host)s:%(port)s' for '%(method)s', "
+"%(extra)s."
+msgstr ""
+
+#: nova/image/glance.py:495
+#, python-format
+msgid "fetching image %s from glance"
+msgstr ""
+
+#: nova/image/s3.py:335
+#, python-format
+msgid "Failed to download %(image_location)s to %(image_path)s"
+msgstr ""
+
+#: nova/image/s3.py:352
+#, python-format
+msgid "Failed to decrypt %(image_location)s to %(image_path)s"
+msgstr ""
+
+#: nova/image/s3.py:362
+#, python-format
+msgid "Failed to untar %(image_location)s to %(image_path)s"
+msgstr ""
+
+#: nova/image/s3.py:372
+#, python-format
+msgid "Failed to upload %(image_location)s to %(image_path)s"
+msgstr ""
+
+#: nova/image/s3.py:396
+#, python-format
+msgid "Failed to decrypt private key: %s"
+msgstr ""
+
+#: nova/image/s3.py:403
+#, python-format
+msgid "Failed to decrypt initialization vector: %s"
+msgstr ""
+
+#: nova/image/s3.py:414
+#, python-format
+msgid "Failed to decrypt image file %(image_file)s: %(err)s"
+msgstr ""
+
+#: nova/image/s3.py:426
+msgid "Unsafe filenames in image"
+msgstr ""
+
+#: nova/ipv6/account_identifier.py:38 nova/ipv6/rfc2462.py:34
+#, python-format
+msgid "Bad mac for to_global_ipv6: %s"
+msgstr ""
+
+#: nova/ipv6/account_identifier.py:40 nova/ipv6/rfc2462.py:36
+#, python-format
+msgid "Bad prefix for to_global_ipv6: %s"
+msgstr ""
+
+#: nova/ipv6/account_identifier.py:42
+#, python-format
+msgid "Bad project_id for to_global_ipv6: %s"
+msgstr ""
+
+#: nova/network/api.py:55
+msgid "instance is a required argument to use @refresh_cache"
+msgstr ""
+
+#: nova/network/api.py:80
+msgid "Failed storing info cache"
+msgstr ""
+
+#: nova/network/api.py:235
+#, python-format
+msgid "re-assign floating IP %(address)s from instance %(instance_id)s"
+msgstr ""
+
+#: nova/network/driver.py:40
+msgid "Network driver option required, but not specified"
+msgstr ""
+
+#: nova/network/driver.py:43
+#, python-format
+msgid "Loading network driver '%s'"
+msgstr ""
+
+#: nova/network/floating_ips.py:88
+#, python-format
+msgid "Fixed ip %(fixed_ip_id)s not found"
+msgstr ""
+
+#: nova/network/floating_ips.py:98 nova/network/floating_ips.py:374
+#, python-format
+msgid "Interface %(interface)s not found"
+msgstr ""
+
+#: nova/network/floating_ips.py:122
+#, python-format
+msgid "floating IP allocation for instance |%(floating_address)s|"
+msgstr ""
+
+#: nova/network/floating_ips.py:179
+msgid "Floating IP is not associated. Ignore."
+msgstr ""
+
+#: nova/network/floating_ips.py:197
+#, python-format
+msgid "Address |%(address)s| is not allocated"
+msgstr ""
+
+#: nova/network/floating_ips.py:201
+#, python-format
+msgid "Address |%(address)s| is not allocated to your project |%(project)s|"
+msgstr ""
+
+#: nova/network/floating_ips.py:221
+#, python-format
+msgid "Quota exceeded for %(pid)s, tried to allocate floating IP"
+msgstr ""
+
+#: nova/network/floating_ips.py:282
+msgid "Failed to update usages deallocating floating IP"
+msgstr ""
+
+#: nova/network/floating_ips.py:532
+#, python-format
+msgid "Starting migration network for instance %(instance_uuid)s"
+msgstr ""
+
+#: nova/network/floating_ips.py:539
+#, python-format
+msgid ""
+"Floating ip address |%(address)s| no longer belongs to instance "
+"%(instance_uuid)s. Will notmigrate it "
+msgstr ""
+
+#: nova/network/floating_ips.py:574
+#, python-format
+msgid "Finishing migration network for instance %(instance_uuid)s"
+msgstr ""
+
+#: nova/network/floating_ips.py:582
+#, python-format
+msgid ""
+"Floating ip address |%(address)s| no longer belongs to instance "
+"%(instance_uuid)s. Will notsetup it."
+msgstr ""
+
+#: nova/network/floating_ips.py:630
+#, python-format
+msgid ""
+"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
+"not visible to either the floating or instance DNS driver. It will be "
+"ignored."
+msgstr ""
+
+#: nova/network/floating_ips.py:670
+#, python-format
+msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
+msgstr ""
+
+#: nova/network/floating_ips.py:679
+#, python-format
+msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
+msgstr ""
+
+#: nova/network/ldapdns.py:100
+#, python-format
+msgid ""
+"Found multiple matches for domain %(domain)s.\n"
+"%(entry)s"
+msgstr ""
+
+#: nova/network/ldapdns.py:127
+#, python-format
+msgid "Unable to dequalify. %(name)s is not in %(domain)s.\n"
+msgstr ""
+
+#: nova/network/ldapdns.py:322
+msgid "This driver only supports type 'a' entries."
+msgstr ""
+
+#: nova/network/ldapdns.py:365
+msgid "This shouldn't be getting called except during testing."
+msgstr ""
+
+#: nova/network/linux_net.py:220
+#, python-format
+msgid "Attempted to remove chain %s which does not exist"
+msgstr ""
+
+#: nova/network/linux_net.py:255
+#, python-format
+msgid "Unknown chain: %r"
+msgstr ""
+
+#: nova/network/linux_net.py:280
+#, python-format
+msgid ""
+"Tried to remove rule that was not there: %(chain)r %(rule)r %(wrap)r "
+"%(top)r"
+msgstr ""
+
+#: nova/network/linux_net.py:425
+msgid "IPTablesManager.apply completed with success"
+msgstr ""
+
+#: nova/network/linux_net.py:681
+#, python-format
+msgid "arping error for ip %s"
+msgstr ""
+
+#: nova/network/linux_net.py:731
+#, python-format
+msgid "Removed %(num)d duplicate rules for floating ip %(float)s"
+msgstr ""
+
+#: nova/network/linux_net.py:776
+#, python-format
+msgid "Error deleting conntrack entries for %s"
+msgstr ""
+
+#: nova/network/linux_net.py:975
+#, python-format
+msgid "Pid %d is stale, skip killing dnsmasq"
+msgstr ""
+
+#: nova/network/linux_net.py:1020
+#, python-format
+msgid "Hupping dnsmasq threw %s"
+msgstr ""
+
+#: nova/network/linux_net.py:1022
+#, python-format
+msgid "Pid %d is stale, relaunching dnsmasq"
+msgstr ""
+
+#: nova/network/linux_net.py:1102
+#, python-format
+msgid "killing radvd threw %s"
+msgstr ""
+
+#: nova/network/linux_net.py:1104
+#, python-format
+msgid "Pid %d is stale, relaunching radvd"
+msgstr ""
+
+#: nova/network/linux_net.py:1280
+#, python-format
+msgid "Net device removed: '%s'"
+msgstr ""
+
+#: nova/network/linux_net.py:1283
+#, python-format
+msgid "Failed removing net device: '%s'"
+msgstr ""
+
+#: nova/network/linux_net.py:1401
+#, python-format
+msgid "Starting VLAN interface %s"
+msgstr ""
+
+#: nova/network/linux_net.py:1447
+#, python-format
+msgid "Starting Bridge %s"
+msgstr ""
+
+#: nova/network/linux_net.py:1459
+#, python-format
+msgid "Adding interface %(interface)s to bridge %(bridge)s"
+msgstr ""
+
+#: nova/network/linux_net.py:1495
+#, python-format
+msgid "Failed to add interface: %s"
+msgstr ""
+
+#: nova/network/linux_net.py:1732
+#, python-format
+msgid "Starting bridge %s "
+msgstr ""
+
+#: nova/network/linux_net.py:1740
+#, python-format
+msgid "Done starting bridge %s"
+msgstr ""
+
+#: nova/network/manager.py:364
+#, python-format
+msgid "Disassociated %s stale fixed ip(s)"
+msgstr ""
+
+#: nova/network/manager.py:368
+msgid "setting network host"
+msgstr ""
+
+#: nova/network/manager.py:480
+msgid "network allocations"
+msgstr ""
+
+#: nova/network/manager.py:487
+#, python-format
+msgid "networks retrieved for instance: |%(networks_list)s|"
+msgstr ""
+
+#: nova/network/manager.py:535
+msgid "network deallocation for instance"
+msgstr ""
+
+#: nova/network/manager.py:801
+#, python-format
+msgid ""
+"instance-dns-zone is |%(domain)s|, which is in availability zone "
+"|%(zone)s|. Instance is in zone |%(zone2)s|. No DNS record will be "
+"created."
+msgstr ""
+
+#: nova/network/manager.py:827
+#, python-format
+msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
+msgstr ""
+
+#: nova/network/manager.py:879
+msgid "Failed to update usages deallocating fixed IP"
+msgstr ""
+
+#: nova/network/manager.py:911
+#, python-format
+msgid "Unable to release %s because vif doesn't exist."
+msgstr ""
+
+#: nova/network/manager.py:934
+#, python-format
+msgid "Leased IP |%(address)s|"
+msgstr ""
+
+#: nova/network/manager.py:938
+#, python-format
+msgid "IP %s leased that is not associated"
+msgstr ""
+
+#: nova/network/manager.py:947
+#, python-format
+msgid "IP |%s| leased that isn't allocated"
+msgstr ""
+
+#: nova/network/manager.py:952
+#, python-format
+msgid "Released IP |%(address)s|"
+msgstr ""
+
+#: nova/network/manager.py:956
+#, python-format
+msgid "IP %s released that is not associated"
+msgstr ""
+
+#: nova/network/manager.py:960
+#, python-format
+msgid "IP %s released that was not leased"
+msgstr ""
+
+#: nova/network/manager.py:979
+#, python-format
+msgid "%s must be an integer"
+msgstr ""
+
+#: nova/network/manager.py:1003
+msgid "Maximum allowed length for 'label' is 255."
+msgstr ""
+
+#: nova/network/manager.py:1023
+#, python-format
+msgid ""
+"Subnet(s) too large, defaulting to /%s. To override, specify "
+"network_size flag."
+msgstr ""
+
+#: nova/network/manager.py:1104
+msgid "cidr already in use"
+msgstr ""
+
+#: nova/network/manager.py:1107
+#, python-format
+msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
+msgstr ""
+
+#: nova/network/manager.py:1118
+#, python-format
+msgid ""
+"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
+"(%(smaller)s)"
+msgstr ""
+
+#: nova/network/manager.py:1175
+msgid "Network already exists!"
+msgstr ""
+
+#: nova/network/manager.py:1194
+#, python-format
+msgid "Network must be disassociated from project %s before delete"
+msgstr ""
+
+#: nova/network/manager.py:1794
+msgid ""
+"The sum between the number of networks and the vlan start cannot be "
+"greater than 4094"
+msgstr ""
+
+#: nova/network/manager.py:1801
+#, python-format
+msgid ""
+"The network range is not big enough to fit %(num_networks)s networks. "
+"Network size is %(network_size)s"
+msgstr ""
+
+#: nova/network/minidns.py:48
+#, python-format
+msgid "minidns file is |%s|"
+msgstr ""
+
+#: nova/network/minidns.py:75 nova/network/minidns.py:106
+msgid "Invalid name"
+msgstr ""
+
+#: nova/network/minidns.py:78
+msgid "This driver only supports type 'a'"
+msgstr ""
+
+#: nova/network/minidns.py:122
+#, python-format
+msgid "Cannot delete entry |%s|"
+msgstr ""
+
+#: nova/network/minidns.py:201
+#, python-format
+msgid "deleted %s"
+msgstr ""
+
+#: nova/network/minidns.py:207
+#, python-format
+msgid "Cannot delete domain |%s|"
+msgstr ""
+
+#: nova/network/model.py:375
+msgid "v4 subnets are required for legacy nw_info"
+msgstr ""
+
+#: nova/network/quantumv2/__init__.py:45
+#, python-format
+msgid "Quantum client authentication failed: %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:152
+#, python-format
+msgid "allocate_for_instance() for %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:155
+#, python-format
+msgid "empty project id for instance %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:201
+#, python-format
+msgid ""
+"Multiple security groups found matching '%s'. Use an ID to be more "
+"specific."
+msgstr ""
+
+#: nova/network/quantumv2/api.py:270
+msgid "Port not found"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:278
+#, python-format
+msgid "Fail to delete port %(portid)s with failure: %(exception)s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:318
+#, python-format
+msgid "deallocate_for_instance() for %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:327
+#, python-format
+msgid "Failed to delete quantum port %(portid)s "
+msgstr ""
+
+#: nova/network/quantumv2/api.py:349
+#, python-format
+msgid "Failed to delete quantum port %(port_id)s "
+msgstr ""
+
+#: nova/network/quantumv2/api.py:373
+#, python-format
+msgid "get_instance_nw_info() for %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:405
+#, python-format
+msgid ""
+"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
+"%(exception)s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:435
+#, python-format
+msgid "Unable to update port %(portid)s with failure: %(exception)s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:445
+#, python-format
+msgid "validate_networks() for %s"
+msgstr ""
+
+#: nova/network/quantumv2/api.py:688
+#, python-format
+msgid "Multiple floating IP pools matches found for name '%s'"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:53
+#, python-format
+msgid "Quantum Error creating security group %s"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:104
+#, python-format
+msgid "Quantum security group %s not found"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:107
+#: nova/network/security_group/quantum_driver.py:153
+#: nova/network/security_group/quantum_driver.py:242
+#, python-format
+msgid "Quantum Error: %s"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:127
+msgid "Quantum Error getting security groups"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:137
+msgid "Security group id should be uuid"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:171
+#, python-format
+msgid "Quantum Error getting security group %s"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:175
+#: nova/network/security_group/quantum_driver.py:340
+#: nova/network/security_group/quantum_driver.py:346
+#: nova/network/security_group/quantum_driver.py:373
+#: nova/network/security_group/quantum_driver.py:388
+#: nova/network/security_group/quantum_driver.py:394
+#: nova/network/security_group/quantum_driver.py:423
+msgid "Quantum Error:"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:228
+#, python-format
+msgid "Quantum Error unable to delete %s"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:239
+#, python-format
+msgid "Quantum security group rule %s not found"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:356
+#, python-format
+msgid ""
+"Cannot add security group %(name)s to %(instance)s since the port "
+"%(port_id)s does not meet security requirements"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:366
+#: nova/network/security_group/quantum_driver.py:416
+#, python-format
+msgid "Adding security group %(security_group_id)s to port %(port_id)s"
+msgstr ""
+
+#: nova/network/security_group/quantum_driver.py:426
+#, python-format
+msgid ""
+"Security group %(security_group_name)s not assocaited with the instance "
+"%(instance)s"
+msgstr ""
+
+#: nova/network/security_group/security_group_base.py:137
+#, python-format
+msgid "This rule already exists in group %s"
+msgstr ""
+
+#: nova/openstack/common/excutils.py:48
+#, python-format
+msgid "Original exception being dropped: %s"
+msgstr ""
+
+#: nova/openstack/common/lockutils.py:98
+#, python-format
+msgid "Could not release the acquired lock `%s`"
+msgstr ""
+
+#: nova/openstack/common/lockutils.py:184
+#, python-format
+msgid "Got semaphore \"%(lock)s\" for method \"%(method)s\"..."
+msgstr ""
+
+#: nova/openstack/common/lockutils.py:195
+#, python-format
+msgid "Attempting to grab file lock \"%(lock)s\" for method \"%(method)s\"..."
+msgstr ""
+
+#: nova/openstack/common/lockutils.py:222
+#, python-format
+msgid "Got file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..."
+msgstr ""
+
+#: nova/openstack/common/lockutils.py:230
+#, python-format
+msgid "Released file lock \"%(lock)s\" at %(path)s for method \"%(method)s\"..."
+msgstr ""
+
+#: nova/openstack/common/log.py:244
+#, python-format
+msgid "Deprecated: %s"
+msgstr ""
+
+#: nova/openstack/common/log.py:347
+#, python-format
+msgid "Error loading logging config %(log_config)s: %(err_msg)s"
+msgstr ""
+
+#: nova/openstack/common/log.py:397
+#, python-format
+msgid "syslog facility must be one of: %s"
+msgstr ""
+
+#: nova/openstack/common/log.py:563
+#, python-format
+msgid "Fatal call to deprecated config: %(msg)s"
+msgstr ""
+
+#: nova/openstack/common/loopingcall.py:84
+#, python-format
+msgid "task run outlasted interval by %s sec"
+msgstr ""
+
+#: nova/openstack/common/loopingcall.py:91
+msgid "in fixed duration looping call"
+msgstr ""
+
+#: nova/openstack/common/loopingcall.py:131
+#, python-format
+msgid "Dynamic looping call sleeping for %.02f seconds"
+msgstr ""
+
+#: nova/openstack/common/loopingcall.py:138
+msgid "in dynamic looping call"
+msgstr ""
+
+#: nova/openstack/common/periodic_task.py:41
+#, python-format
+msgid "Unexpected argument for periodic task creation: %(arg)s."
+msgstr ""
+
+#: nova/openstack/common/periodic_task.py:132
+#, python-format
+msgid "Skipping periodic task %(task)s because its interval is negative"
+msgstr ""
+
+#: nova/openstack/common/periodic_task.py:137
+#, python-format
+msgid "Skipping periodic task %(task)s because it is disabled"
+msgstr ""
+
+#: nova/openstack/common/periodic_task.py:175
+#, python-format
+msgid "Running periodic task %(full_task_name)s"
+msgstr ""
+
+#: nova/openstack/common/periodic_task.py:183
+#, python-format
+msgid "Error during %(full_task_name)s: %(e)s"
+msgstr ""
+
+#: nova/openstack/common/policy.py:394
+#, python-format
+msgid "Failed to understand rule %(rule)s"
+msgstr ""
+
+#: nova/openstack/common/policy.py:404
+#, python-format
+msgid "No handler for matches of kind %s"
+msgstr ""
+
+#: nova/openstack/common/policy.py:679
+#, python-format
+msgid "Failed to understand rule %(rule)r"
+msgstr ""
+
+#: nova/openstack/common/processutils.py:127
+#, python-format
+msgid "Got unknown keyword args to utils.execute: %r"
+msgstr ""
+
+#: nova/openstack/common/processutils.py:142
+#, python-format
+msgid "Running cmd (subprocess): %s"
+msgstr ""
+
+#: nova/openstack/common/processutils.py:179
+#, python-format
+msgid "%r failed. Retrying."
+msgstr ""
+
+#: nova/openstack/common/db/sqlalchemy/session.py:461
+msgid "DB exception wrapped."
+msgstr ""
+
+#: nova/openstack/common/db/sqlalchemy/session.py:512
+#, python-format
+msgid "Got mysql server has gone away: %s"
+msgstr ""
+
+#: nova/openstack/common/db/sqlalchemy/session.py:584
+#, python-format
+msgid "SQL connection failed. %s attempts left."
+msgstr ""
+
+#: nova/openstack/common/db/sqlalchemy/utils.py:72
+msgid "Id not in sort_keys; is sort_keys unique?"
+msgstr ""
+
+#: nova/openstack/common/db/sqlalchemy/utils.py:120
+msgid "Unknown sort direction, must be 'desc' or 'asc'"
+msgstr ""
+
+#: nova/openstack/common/notifier/api.py:125
+#, python-format
+msgid "%s not in valid priorities"
+msgstr ""
+
+#: nova/openstack/common/notifier/api.py:141
+#, python-format
+msgid ""
+"Problem '%(e)s' attempting to send to notification system. "
+"Payload=%(payload)s"
+msgstr ""
+
+#: nova/openstack/common/notifier/api.py:171
+#, python-format
+msgid "Failed to load notifier %s. These notifications will not be sent."
+msgstr ""
+
+#: nova/openstack/common/notifier/rabbit_notifier.py:27
+msgid "The rabbit_notifier is now deprecated. Please use rpc_notifier instead."
+msgstr ""
+
+#: nova/openstack/common/notifier/rpc_notifier.py:45
+#: nova/openstack/common/notifier/rpc_notifier2.py:51
+#, python-format
+msgid "Could not send notification to %(topic)s. Payload=%(message)s"
+msgstr ""
+
+#: nova/openstack/common/plugin/pluginmanager.py:66
+#, python-format
+msgid "Failed to load plugin %(plug)s: %(exc)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/__init__.py:106
+#, python-format
+msgid ""
+"A RPC is being made while holding a lock. The locks currently held are "
+"%(locks)s. This is probably a bug. Please report it. Include the "
+"following: [%(stack)s]."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:75
+msgid "Pool creating new connection"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:200
+#, python-format
+msgid "no calling threads waiting for msg_id : %s, message : %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:208
+#, python-format
+msgid ""
+"Number of call waiters is greater than warning threshhold: %d. There "
+"could be a MulticallProxyWaiter leak."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:291
+#, python-format
+msgid "unpacked context: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:337
+#, python-format
+msgid "UNIQUE_ID is %s."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:406
+#, python-format
+msgid "received %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:414
+#, python-format
+msgid "no method for message: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:415
+#, python-format
+msgid "No method for message: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:443
+#: nova/openstack/common/rpc/impl_zmq.py:286
+#, python-format
+msgid "Expected exception during message handling (%s)"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:451
+#: nova/openstack/common/rpc/impl_zmq.py:292
+msgid "Exception during message handling"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:586
+#, python-format
+msgid "Making synchronous call on %s ..."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:589
+#, python-format
+msgid "MSG_ID is %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:623
+#, python-format
+msgid "Making asynchronous cast on %s..."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:632
+msgid "Making asynchronous fanout cast..."
+msgstr ""
+
+#: nova/openstack/common/rpc/amqp.py:660
+#, python-format
+msgid "Sending %(event_type)s on %(topic)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:74
+msgid "An unknown RPC related exception occurred."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:104
+#, python-format
+msgid ""
+"Remote error: %(exc_type)s %(value)s\n"
+"%(traceback)s."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:121
+#, python-format
+msgid ""
+"Timeout while waiting on RPC response - topic: \"%(topic)s\", RPC method:"
+" \"%(method)s\" info: \"%(info)s\""
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:137
+#: nova/openstack/common/rpc/common.py:138
+#: nova/openstack/common/rpc/common.py:139
+msgid "<unknown>"
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:143
+#, python-format
+msgid "Found duplicate message(%(msg_id)s). Skipping it."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:147
+msgid "Invalid reuse of an RPC connection."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:151
+#, python-format
+msgid "Specified RPC version, %(version)s, not supported by this endpoint."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:156
+#, python-format
+msgid ""
+"Specified RPC envelope version, %(version)s, not supported by this "
+"endpoint."
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:280
+#, python-format
+msgid "Failed to sanitize %(item)s. Key error %(err)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/common.py:302
+#, python-format
+msgid "Returning exception %s to caller"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:169
+#: nova/openstack/common/rpc/impl_qpid.py:133
+msgid "Failed to process message... skipping it."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:480
+#, python-format
+msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:502
+#, python-format
+msgid "Connected to AMQP server on %(hostname)s:%(port)d"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:539
+#, python-format
+msgid ""
+"Unable to connect to AMQP server on %(hostname)s:%(port)d after "
+"%(max_retries)d tries: %(err_str)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:555
+#, python-format
+msgid ""
+"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying "
+"again in %(sleep_time)d seconds."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:609
+#: nova/openstack/common/rpc/impl_qpid.py:404
+#, python-format
+msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:627
+#: nova/openstack/common/rpc/impl_qpid.py:419
+#, python-format
+msgid "Timed out waiting for RPC response: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:631
+#: nova/openstack/common/rpc/impl_qpid.py:423
+#, python-format
+msgid "Failed to consume message from queue: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_kombu.py:670
+#: nova/openstack/common/rpc/impl_qpid.py:458
+#, python-format
+msgid "Failed to publish message to topic '%(topic)s': %(err_str)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_qpid.py:352
+#, python-format
+msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_qpid.py:358
+#, python-format
+msgid "Connected to AMQP server on %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_qpid.py:371
+msgid "Re-established AMQP queues"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_qpid.py:431
+msgid "Error processing message. Skipping it."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:97
+msgid "JSON serialization failed."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:104
+#, python-format
+msgid "Deserializing: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:140
+#, python-format
+msgid "Connecting to %(addr)s with %(type)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:141
+#, python-format
+msgid "-> Subscribed to %(subscribe)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:142
+#, python-format
+msgid "-> bind: %(bind)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:150
+msgid "Could not open socket."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:162
+#, python-format
+msgid "Subscribing to %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:204
+msgid "You cannot recv on this socket."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:209
+msgid "You cannot send on this socket."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:273
+#, python-format
+msgid "Running func with context: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:311
+msgid "Sending reply"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:345
+msgid "RPC message did not include method."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:380
+msgid "Registering reactor"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:392
+msgid "In reactor registered"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:407
+msgid "Out reactor registered"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:411
+msgid "Consuming socket"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:453
+#, python-format
+msgid "CONSUMER GOT %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:465
+#, python-format
+msgid "Creating proxy for topic: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:471
+msgid "Topic contained dangerous characters."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:496
+#, python-format
+msgid "ROUTER RELAY-OUT SUCCEEDED %(data)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:505
+msgid "Topic socket file creation failed."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:510
+#, python-format
+msgid "ROUTER RELAY-OUT QUEUED %(data)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:513
+#, python-format
+msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:532
+#, python-format
+msgid "Could not create IPC directory %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:542
+msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:576
+#, python-format
+msgid "CONSUMER RECEIVED DATA: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:578
+#, python-format
+msgid "ROUTER RELAY-OUT %(data)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:600
+msgid "ZMQ Envelope version unsupported or unknown."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:628
+msgid "Skipping topic registration. Already registered."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:635
+#, python-format
+msgid "Consumer is a zmq.%s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:687
+msgid "Creating payload"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:700
+msgid "Creating queue socket for reply waiter"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:713
+msgid "Sending cast"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:716
+msgid "Cast sent; Waiting reply"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:719
+#, python-format
+msgid "Received message: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:720
+msgid "Unpacking response"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:729
+msgid "Unsupported or unknown ZMQ envelope returned."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:736
+msgid "RPC Message Invalid."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:760
+#, python-format
+msgid "%(msg)s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:763
+#, python-format
+msgid "Sending message(s) to: %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:767
+msgid "No matchmaker results. Not casting."
+msgstr ""
+
+#: nova/openstack/common/rpc/impl_zmq.py:770
+msgid "No match from matchmaker."
+msgstr ""
+
+#: nova/openstack/common/rpc/matchmaker.py:53
+msgid "Match not found by MatchMaker."
+msgstr ""
+
+#: nova/openstack/common/rpc/matchmaker.py:89
+msgid "Matchmaker does not implement registration or heartbeat."
+msgstr ""
+
+#: nova/openstack/common/rpc/matchmaker.py:239
+#, python-format
+msgid "Matchmaker unregistered: %s, %s"
+msgstr ""
+
+#: nova/openstack/common/rpc/matchmaker.py:250
+msgid "Register before starting heartbeat."
+msgstr ""
+
+#: nova/openstack/common/rpc/matchmaker.py:343
+#: nova/openstack/common/rpc/matchmaker.py:361
+#, python-format
+msgid "No key defining hosts for topic '%s', see ringfile"
+msgstr ""
+
+#: nova/scheduler/chance.py:51
+msgid "Is the appropriate service running?"
+msgstr ""
+
+#: nova/scheduler/chance.py:56
+msgid "Could not find another compute"
+msgstr ""
+
+#: nova/scheduler/driver.py:61
+msgid "Exception during scheduler.run_instance"
+msgstr ""
+
+#: nova/scheduler/driver.py:63 nova/scheduler/manager.py:222
+#, python-format
+msgid "Setting instance to %(state)s state."
+msgstr ""
+
+#: nova/scheduler/driver.py:156
+msgid "Driver must implement schedule_prep_resize"
+msgstr ""
+
+#: nova/scheduler/driver.py:164
+msgid "Driver must implement schedule_run_instance"
+msgstr ""
+
+#: nova/scheduler/driver.py:169
+msgid "Driver must implement select_hosts"
+msgstr ""
+
+#: nova/scheduler/driver.py:335
+#, python-format
+msgid ""
+"Unable to migrate %(instance_uuid)s to %(dest)s: Lack of "
+"memory(host:%(avail)s <= instance:%(mem_inst)s)"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:73
+#, python-format
+msgid "Attempting to build %(num_instances)d instance(s)"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:227
+msgid "Invalid value for 'scheduler_max_attempts', must be >= 1"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:244
+#, python-format
+msgid "Error from last host: %(last_host)s (node %(last_node)s): %(exc)s"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:276
+#, python-format
+msgid ""
+"Exceeded max scheduling attempts %(max_attempts)d for instance "
+"%(instance_uuid)s"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:344
+#, python-format
+msgid "Filtered %(hosts)s"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:357
+#, python-format
+msgid "Choosing host %(chosen_host)s"
+msgstr ""
+
+#: nova/scheduler/filter_scheduler.py:391
+#, python-format
+msgid "Unable to migrate %(instance_uuid)s to %(dest)s: Lack of memory"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:308
+#, python-format
+msgid "Host filter ignoring hosts: %s"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:320
+#, python-format
+msgid "Host filter forcing available hosts to %s"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:323
+#, python-format
+msgid "No hosts matched due to not matching 'force_hosts' value of '%s'"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:336
+#, python-format
+msgid "Host filter forcing available nodes to %s"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:339
+#, python-format
+msgid "No nodes matched due to not matching 'force_nodes' value of '%s'"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:379
+#, python-format
+msgid "Ignoring %(service_name)s service update from %(host)s"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:384
+#, python-format
+msgid "Received %(service_name)s service update from %(state_key)s."
+msgstr ""
+
+#: nova/scheduler/host_manager.py:403
+#: nova/scheduler/filters/trusted_filter.py:214
+#, python-format
+msgid "No service for compute ID %s"
+msgstr ""
+
+#: nova/scheduler/host_manager.py:425
+#, python-format
+msgid "Removing dead compute node %(host)s:%(node)s from scheduler"
+msgstr ""
+
+#: nova/scheduler/manager.py:208
+#, python-format
+msgid "Failed to schedule_%(method)s: %(ex)s"
+msgstr ""
+
+#: nova/scheduler/scheduler_options.py:71
+#, python-format
+msgid "Could not stat scheduler options file %(filename)s: '%(e)s'"
+msgstr ""
+
+#: nova/scheduler/scheduler_options.py:79
+#, python-format
+msgid "Could not decode scheduler options: '%(e)s'"
+msgstr ""
+
+#: nova/scheduler/filters/affinity_filter.py:95
+#, python-format
+msgid "Group affinity: %(host)s in %(configured)s"
+msgstr ""
+
+#: nova/scheduler/filters/aggregate_instance_extra_specs.py:49
+#: nova/scheduler/filters/aggregate_instance_extra_specs.py:56
+#: nova/scheduler/filters/compute_capabilities_filter.py:57
+#, python-format
+msgid "%(host_state)s fails instance_type extra_specs requirements"
+msgstr ""
+
+#: nova/scheduler/filters/aggregate_multitenancy_isolation.py:44
+#, python-format
+msgid "%(host_state)s fails tenant id on aggregate"
+msgstr ""
+
+#: nova/scheduler/filters/compute_filter.py:40
+#, python-format
+msgid "%(host_state)s is disabled or has not been heard from in a while"
+msgstr ""
+
+#: nova/scheduler/filters/compute_filter.py:44
+#, python-format
+msgid "%(host_state)s is disabled via capabilities"
+msgstr ""
+
+#: nova/scheduler/filters/core_filter.py:44
+msgid "VCPUs not set; assuming CPU collection broken"
+msgstr ""
+
+#: nova/scheduler/filters/disk_filter.py:47
+#, python-format
+msgid ""
+"%(host_state)s does not have %(requested_disk)s MB usable disk, it only "
+"has %(usable_disk_mb)s MB usable disk."
+msgstr ""
+
+#: nova/scheduler/filters/image_props_filter.py:48
+#, python-format
+msgid ""
+"Instance contains properties %(image_props)s, but no corresponding "
+"capabilities are advertised by the compute node"
+msgstr ""
+
+#: nova/scheduler/filters/image_props_filter.py:61
+#, python-format
+msgid ""
+"Instance properties %(image_props)s are satisfied by compute host "
+"capabilities %(capabilities)s"
+msgstr ""
+
+#: nova/scheduler/filters/image_props_filter.py:66
+#, python-format
+msgid ""
+"Instance contains properties %(image_props)s that are not provided by the"
+" compute node capabilities %(capabilities)s"
+msgstr ""
+
+#: nova/scheduler/filters/image_props_filter.py:82
+#, python-format
+msgid "%(host_state)s does not support requested instance_properties"
+msgstr ""
+
+#: nova/scheduler/filters/io_ops_filter.py:42
+#, python-format
+msgid ""
+"%(host_state)s fails I/O ops check: Max IOs per host is set to "
+"%(max_io_ops)s"
+msgstr ""
+
+#: nova/scheduler/filters/num_instances_filter.py:39
+#, python-format
+msgid ""
+"%(host_state)s fails num_instances check: Max instances per host is set "
+"to %(max_instances)s"
+msgstr ""
+
+#: nova/scheduler/filters/ram_filter.py:46
+#, python-format
+msgid ""
+"%(host_state)s does not have %(requested_ram)s MB usable ram, it only has"
+" %(usable_ram)s MB usable ram."
+msgstr ""
+
+#: nova/scheduler/filters/retry_filter.py:41
+#, python-format
+msgid "Host %(host)s %(pass_msg)s. Previously tried hosts: %(hosts)s"
+msgstr ""
+
+#: nova/servicegroup/api.py:60
+#, python-format
+msgid "ServiceGroup driver defined as an instance of %s"
+msgstr ""
+
+#: nova/servicegroup/api.py:66
+#, python-format
+msgid "unknown ServiceGroup driver name: %s"
+msgstr ""
+
+#: nova/servicegroup/api.py:83
+#, python-format
+msgid ""
+"Join new ServiceGroup member %(member_id)s to the %(group_id)s group, "
+"service = %(service)s"
+msgstr ""
+
+#: nova/servicegroup/api.py:90
+#, python-format
+msgid "Check if the given member [%s] is part of the ServiceGroup, is up"
+msgstr ""
+
+#: nova/servicegroup/api.py:99
+#, python-format
+msgid ""
+"Explicitly remove the given member %(member_id)s from the%(group_id)s "
+"group monitoring"
+msgstr ""
+
+#: nova/servicegroup/api.py:106
+#, python-format
+msgid "Returns ALL members of the [%s] ServiceGroup"
+msgstr ""
+
+#: nova/servicegroup/api.py:114
+#, python-format
+msgid "Returns one member of the [%s] group"
+msgstr ""
+
+#: nova/servicegroup/drivers/db.py:42
+#, python-format
+msgid ""
+"DB_Driver: join new ServiceGroup member %(member_id)s to the %(group_id)s"
+" group, service = %(service)s"
+msgstr ""
+
+#: nova/servicegroup/drivers/db.py:46
+msgid "service is a mandatory argument for DB based ServiceGroup driver"
+msgstr ""
+
+#: nova/servicegroup/drivers/db.py:76
+#, python-format
+msgid "DB_Driver: get_all members of the %s group"
+msgstr ""
+
+#: nova/servicegroup/drivers/db.py:99 nova/servicegroup/drivers/mc.py:103
+msgid "Recovered model server connection!"
+msgstr ""
+
+#: nova/servicegroup/drivers/db.py:105 nova/servicegroup/drivers/mc.py:109
+msgid "model server went away"
+msgstr ""
+
+#: nova/servicegroup/drivers/mc.py:44
+msgid "memcached_servers not defined"
+msgstr ""
+
+#: nova/servicegroup/drivers/mc.py:52
+#, python-format
+msgid ""
+"Memcached_Driver: join new ServiceGroup member %(member_id)s to the "
+"%(group_id)s group, service = %(service)s"
+msgstr ""
+
+#: nova/servicegroup/drivers/mc.py:57
+msgid "service is a mandatory argument for Memcached based ServiceGroup driver"
+msgstr ""
+
+#: nova/servicegroup/drivers/mc.py:78
+#, python-format
+msgid "Memcached_Driver: get_all members of the %s group"
+msgstr ""
+
+#: nova/servicegroup/drivers/zk.py:80
+#, python-format
+msgid ""
+"ZooKeeperDriver: join new member %(id)s to the %(gr)s group, "
+"service=%(sr)s"
+msgstr ""
+
+#: nova/servicegroup/drivers/zk.py:90
+msgid ""
+"Unable to join. It is possible that either another node exists with the "
+"same name, or this node just restarted. We will try again in a short "
+"while to make sure."
+msgstr ""
+
+#: nova/servicegroup/drivers/zk.py:101
+#, python-format
+msgid "ZooKeeperDriver.leave: %(member)s from group %(group)s"
+msgstr ""
+
+#: nova/servicegroup/drivers/zk.py:109
+#, python-format
+msgid "ZooKeeperDriver.leave: %(id)s has not joined to the %(gr)s group"
+msgstr ""
+
+#: nova/storage/linuxscsi.py:71
+#, python-format
+msgid "Trying (%(tries)s) to remove device %(device)s"
+msgstr ""
+
+#: nova/storage/linuxscsi.py:101
+#, python-format
+msgid "Multipath call failed exit (%(code)s)"
+msgstr ""
+
+#: nova/storage/linuxscsi.py:119
+#, python-format
+msgid "Couldn't find multipath device %(line)s"
+msgstr ""
+
+#: nova/storage/linuxscsi.py:123
+#, python-format
+msgid "Found multipath device = %(mdev)s"
+msgstr ""
+
+#: nova/tests/fake_ldap.py:34
+msgid "Attempted to instantiate singleton"
+msgstr ""
+
+#: nova/tests/fake_utils.py:72
+#, python-format
+msgid "Faking execution of cmd (subprocess): %s"
+msgstr ""
+
+#: nova/tests/fake_utils.py:80
+#, python-format
+msgid "Faked command matched %s"
+msgstr ""
+
+#: nova/tests/fake_utils.py:96
+#, python-format
+msgid "Faked command raised an exception %s"
+msgstr ""
+
+#: nova/tests/fake_utils.py:101
+#, python-format
+msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'"
+msgstr ""
+
+#: nova/tests/fake_volume.py:187
+msgid "status must be available"
+msgstr ""
+
+#: nova/tests/fake_volume.py:191 nova/volume/cinder.py:228
+msgid "already attached"
+msgstr ""
+
+#: nova/tests/fake_volume.py:195 nova/volume/cinder.py:232
+msgid "Instance and volume not in same availability_zone"
+msgstr ""
+
+#: nova/tests/fake_volume.py:200 nova/volume/cinder.py:238
+msgid "already detached"
+msgstr ""
+
+#: nova/tests/fakelibvirt.py:892
+msgid "Please extend mock libvirt module to support flags"
+msgstr ""
+
+#: nova/tests/fakelibvirt.py:896
+msgid "Expected a list for 'auth' parameter"
+msgstr ""
+
+#: nova/tests/fakelibvirt.py:900
+msgid "Expected a function in 'auth[0]' parameter"
+msgstr ""
+
+#: nova/tests/fakelibvirt.py:904
+msgid "Expected a function in 'auth[1]' parameter"
+msgstr ""
+
+#: nova/tests/test_hypervapi.py:433
+msgid "fake vswitch not found"
+msgstr ""
+
+#: nova/tests/test_misc.py:59
+#, python-format
+msgid ""
+"The following migrations are missing a downgrade:\n"
+"\t%s"
+msgstr ""
+
+#: nova/tests/test_xenapi.py:897
+#, python-format
+msgid "Creating files in %s to simulate guest agent"
+msgstr ""
+
+#: nova/tests/test_xenapi.py:908
+#, python-format
+msgid "Removing simulated guest agent files in %s"
+msgstr ""
+
+#: nova/tests/api/test_auth.py:79
+msgid "200 Role Match"
+msgstr ""
+
+#: nova/tests/api/test_auth.py:81
+msgid "200 No Roles"
+msgstr ""
+
+#: nova/tests/api/test_auth.py:84
+msgid "unexpected role header"
+msgstr ""
+
+#: nova/tests/api/openstack/compute/test_servers.py:3340
+msgid ""
+"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
+"instances"
+msgstr ""
+
+#: nova/tests/api/openstack/compute/test_servers.py:3345
+msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
+msgstr ""
+
+#: nova/tests/api/openstack/compute/test_servers.py:3350
+msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:1099
+#: nova/tests/compute/test_compute.py:1117
+#: nova/tests/compute/test_compute.py:1168
+#: nova/tests/compute/test_compute.py:1195
+#: nova/tests/compute/test_compute.py:1241
+#: nova/tests/compute/test_compute.py:3725
+#, python-format
+msgid "Running instances: %s"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:1105
+#: nova/tests/compute/test_compute.py:1140
+#: nova/tests/compute/test_compute.py:1183
+#: nova/tests/compute/test_compute.py:1213
+#, python-format
+msgid "After terminating instances: %s"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:1723
+msgid "Internal error"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:3736
+#, python-format
+msgid "After force-killing instances: %s"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:4238
+msgid "wrong host/node"
+msgstr ""
+
+#: nova/tests/compute/test_compute.py:8725
+msgid "spawn error"
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:177
+#, python-format
+msgid "%(result_str)s: %(result)s is not a dict."
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:191
+#, python-format
+msgid ""
+"Dictionary key mismatch:\n"
+"Extra key(s) in template:\n"
+"%(ex_delta)s\n"
+"Extra key(s) in %(result_str)s:\n"
+"%(res_delta)s\n"
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:202
+#, python-format
+msgid "%(result_str)s: %(result)s is not a list."
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:221
+msgid "Extra list items in template:"
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:225
+#, python-format
+msgid "Extra list items in %(result_str)s:"
+msgstr ""
+
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
+#, python-format
+msgid ""
+"Values do not match:\n"
+"Template: %(expected)s\n"
+"%(result_str)s: %(result)s"
+msgstr ""
+
+#: nova/tests/integrated/test_login.py:31
+#, python-format
+msgid "flavor: %s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:38
+#, python-format
+msgid ""
+"%(message)s\n"
+"Status Code: %(_status)s\n"
+"Body: %(_body)s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:47
+msgid "Authentication error"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:55
+msgid "Authorization error"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:63
+msgid "Item not found"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:105
+#, python-format
+msgid "Doing %(method)s on %(relative_url)s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:107
+#, python-format
+msgid "Body: %s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:125
+#, python-format
+msgid "%(auth_uri)s => code %(http_status)s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:155
+#, python-format
+msgid "%(relative_uri)s => code %(http_status)s"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:165
+msgid "Unexpected status code"
+msgstr ""
+
+#: nova/tests/integrated/api/client.py:172
+#, python-format
+msgid "Decoding JSON: %s"
+msgstr ""
+
+#: nova/virt/configdrive.py:97
+#, python-format
+msgid "Added %(filepath)s to config drive"
+msgstr ""
+
+#: nova/virt/driver.py:924
+msgid "Event must be an instance of nova.virt.event.Event"
+msgstr ""
+
+#: nova/virt/driver.py:930
+#, python-format
+msgid "Exception dispatching event %(event)s: %(ex)s"
+msgstr ""
+
+#: nova/virt/driver.py:952
+msgid "Compute driver option required, but not specified"
+msgstr ""
+
+#: nova/virt/driver.py:955
+#, python-format
+msgid "Loading compute driver '%s'"
+msgstr ""
+
+#: nova/virt/driver.py:962
+#, python-format
+msgid "Unable to load the virtualization driver: %s"
+msgstr ""
+
+#: nova/virt/fake.py:210
+#, python-format
+msgid "Key '%(key)s' not in instances '%(inst)s'"
+msgstr ""
+
+#: nova/virt/firewall.py:184 nova/virt/libvirt/firewall.py:305
+msgid "Attempted to unfilter instance which is not filtered"
+msgstr ""
+
+#: nova/virt/firewall.py:195
+msgid "Filters added to instance"
+msgstr ""
+
+#: nova/virt/firewall.py:197
+msgid "Provider Firewall Rules refreshed"
+msgstr ""
+
+#: nova/virt/firewall.py:377
+#, python-format
+msgid "Adding security group rule: %r"
+msgstr ""
+
+#: nova/virt/firewall.py:511 nova/virt/xenapi/firewall.py:74
+#, python-format
+msgid "Adding provider rule: %s"
+msgstr ""
+
+#: nova/virt/images.py:113
+msgid "Snapshot list encountered but no header found!"
+msgstr ""
+
+#: nova/virt/images.py:215
+msgid "'qemu-img info' parsing failed."
+msgstr ""
+
+#: nova/virt/images.py:221
+#, python-format
+msgid "fmt=%(fmt)s backed by: %(backing_file)s"
+msgstr ""
+
+#: nova/virt/images.py:233
+#, python-format
+msgid "Converted to raw, but format is now %s"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:90
+#, python-format
+msgid "Request for baremetal node %s sent to wrong service host"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:143
+msgid "cpu_arch is not found in instance_type_extra_specs"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:185
+#, python-format
+msgid "Baremetal node id not supplied to driver for %r"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:257
+#, python-format
+msgid "Error deploying instance %(instance)s on baremetal node %(node)s."
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:284
+#, python-format
+msgid "Baremetal power manager failed to restart node for instance %r"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:295
+#, python-format
+msgid "Destroy called on non-existing instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:313
+#, python-format
+msgid "Error from baremetal driver during destroy: %s"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:318
+#, python-format
+msgid "Error while recording destroy failure in baremetal database: %s"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:328
+#, python-format
+msgid "Baremetal power manager failed to stop node for instance %r"
+msgstr ""
+
+#: nova/virt/baremetal/driver.py:340
+#, python-format
+msgid "Baremetal power manager failed to start node for instance %r"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:86
+#, python-format
+msgid "pid file %s does not contain any pid"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:109
+msgid "Node id not supplied to IPMI"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:112
+msgid "Address not supplied to IPMI"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:115
+msgid "User not supplied to IPMI"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:118
+msgid "Password not supplied to IPMI"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:135
+#, python-format
+msgid "ipmitool stdout: '%(out)s', stderr: '%(err)s'"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:161
+msgid "IPMI power on failed"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:183
+msgid "IPMI power off failed"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:193
+msgid "IPMI set next bootdev failed"
+msgstr ""
+
+#: nova/virt/baremetal/ipmi.py:198 nova/virt/baremetal/tilera_pdu.py:153
+#, python-format
+msgid "Activate node called, but node %s is already active"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:92
+#, python-format
+msgid "Building PXE config for deployment %s."
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:231
+#, python-format
+msgid ""
+"Can not activate PXE bootloader. The following boot parameters were not "
+"passed to baremetal driver: %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:255 nova/virt/baremetal/tilera.py:179
+#, python-format
+msgid "Fetching kernel and ramdisk for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:287 nova/virt/baremetal/tilera.py:210
+#, python-format
+msgid "Fetching image %(ami)s for instance %(name)s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:327 nova/virt/baremetal/tilera.py:246
+#, python-format
+msgid "Injecting files into image for instance %(name)s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:459 nova/virt/baremetal/tilera.py:365
+#, python-format
+msgid "Node associated with another instance while waiting for deploy of %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:466
+#, python-format
+msgid "PXE deploy started for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:471
+#, python-format
+msgid "PXE deploy completed for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:475
+#, python-format
+msgid "PXE deploy failed for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:477 nova/virt/baremetal/tilera.py:390
+#, python-format
+msgid "Baremetal node deleted while waiting for deployment of instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/pxe.py:482
+#, python-format
+msgid "Timeout reached while waiting for PXE deploy of instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/tilera.py:154
+#, python-format
+msgid ""
+"Can not activate Tilera bootloader. The following boot parameters were "
+"not passed to baremetal driver: %s"
+msgstr ""
+
+#: nova/virt/baremetal/tilera.py:371
+#, python-format
+msgid "Tilera deploy started for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/tilera.py:377
+#, python-format
+msgid "Tilera deploy completed for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/tilera.py:385
+msgid "Node is unknown error state."
+msgstr ""
+
+#: nova/virt/baremetal/tilera.py:388
+#, python-format
+msgid "Tilera deploy failed for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:83
+msgid "Node id not supplied to PDU"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:86
+msgid "Address not supplied to PDU"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:89
+msgid "User not supplied to PDU"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:92
+msgid "Password not supplied to PDU"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:117
+msgid "PDU failed"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:134
+msgid "PDU power on failed"
+msgstr ""
+
+#: nova/virt/baremetal/tilera_pdu.py:147
+msgid "PDU power off failed"
+msgstr ""
+
+#: nova/virt/baremetal/utils.py:41
+#, python-format
+msgid "Failed to inject data into image %(image)s. Error: %(e)s"
+msgstr ""
+
+#: nova/virt/baremetal/utils.py:52
+#, python-format
+msgid "Failed to unlink %(path)s, error: %(e)s"
+msgstr ""
+
+#: nova/virt/baremetal/utils.py:60
+#, python-format
+msgid "Failed to remove dir %(path)s, error: %(e)s"
+msgstr ""
+
+#: nova/virt/baremetal/utils.py:75
+#, python-format
+msgid "Failed to create symlink from %(source)s to %(link)s, error: %(e)s"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:37
+#, python-format
+msgid "plug: instance_uuid=%(uuid)s vif=%(vif)s"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:50
+#, python-format
+msgid "pif:%(id)s is plugged (vif_uuid=%(vif_uuid)s)"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:57
+#, python-format
+msgid ""
+"Baremetal node: %(id)s has no available physical interface for virtual "
+"interface %(vif_uuid)s"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:63
+#, python-format
+msgid "unplug: instance_uuid=%(uuid)s vif=%(vif)s"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:71
+#, python-format
+msgid "pif:%(id)s is unplugged (vif_uuid=%(vif_uuid)s)"
+msgstr ""
+
+#: nova/virt/baremetal/vif_driver.py:75
+#, python-format
+msgid "no pif for vif_uuid=%s"
+msgstr ""
+
+#: nova/virt/baremetal/virtual_power_driver.py:112
+msgid "virtual_power_ssh_host not defined. Can not Start"
+msgstr ""
+
+#: nova/virt/baremetal/virtual_power_driver.py:116
+msgid "virtual_power_host_user not defined. Can not Start"
+msgstr ""
+
+#: nova/virt/baremetal/virtual_power_driver.py:122
+msgid "virtual_power_host_pass/key not set. Can not Start"
+msgstr ""
+
+#: nova/virt/baremetal/volume_driver.py:122
+#, python-format
+msgid "baremetal driver was unable to delete tid %s"
+msgstr ""
+
+#: nova/virt/baremetal/volume_driver.py:186
+#, python-format
+msgid "Could not determine iscsi initiator name for instance %s"
+msgstr ""
+
+#: nova/virt/baremetal/volume_driver.py:227
+#, python-format
+msgid "No fixed PXE IP is associated to %s"
+msgstr ""
+
+#: nova/virt/baremetal/volume_driver.py:259
+#, python-format
+msgid "detach volume could not find tid for %s"
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:199
+msgid "instance_uuid must be supplied to bm_node_associate_and_update"
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:211
+#, python-format
+msgid "Failed to associate instance %(i_uuid)s to baremetal node %(n_uuid)s."
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:329
+msgid "No more PXE IPs available"
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:351
+#: nova/virt/baremetal/db/sqlalchemy/api.py:393
+#, python-format
+msgid "Baremetal interface %s not found"
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:403
+#, python-format
+msgid "Baremetal interface %s already in use"
+msgstr ""
+
+#: nova/virt/baremetal/db/sqlalchemy/api.py:417
+#, python-format
+msgid "Baremetal virtual interface %s not found"
+msgstr ""
+
+#: nova/virt/disk/api.py:133
+#, python-format
+msgid "Checking if we can resize image %(image)s. size=%(size)s, CoW=%(use_cow)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:139
+#, python-format
+msgid "Cannot resize filesystem %s to a smaller size."
+msgstr ""
+
+#: nova/virt/disk/api.py:150
+#, python-format
+msgid "Unable to mount image %(image)s with error %(error)s. Cannot resize."
+msgstr ""
+
+#: nova/virt/disk/api.py:160
+#, python-format
+msgid ""
+"Unable to determine label for image %(image)s with error %(errror)s. "
+"Cannot resize."
+msgstr ""
+
+#: nova/virt/disk/api.py:227
+msgid "image already mounted"
+msgstr ""
+
+#: nova/virt/disk/api.py:283
+#, python-format
+msgid ""
+"Inject data image=%(image)s key=%(key)s net=%(net)s metadata=%(metadata)s"
+" admin_password=ha-ha-not-telling-you files=%(files)s "
+"partition=%(partition)s use_cow=%(use_cow)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:300
+#, python-format
+msgid "Ignoring error injecting data into image (%(e)s)"
+msgstr ""
+
+#: nova/virt/disk/api.py:319
+#, python-format
+msgid ""
+"Failed to mount container filesystem '%(image)s' on '%(target)s': "
+"%(errors)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:336
+#, python-format
+msgid "Failed to teardown ntainer filesystem: %s"
+msgstr ""
+
+#: nova/virt/disk/api.py:349
+#, python-format
+msgid "Failed to umount container filesystem: %s"
+msgstr ""
+
+#: nova/virt/disk/api.py:374
+#, python-format
+msgid "Ignoring error injecting %(inject)s into image (%(e)s)"
+msgstr ""
+
+#: nova/virt/disk/api.py:386
+#, python-format
+msgid "Inject file fs=%(fs)s path=%(path)s append=%(append)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:395
+#, python-format
+msgid "Inject metadata fs=%(fs)s metadata=%(metadata)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:436
+#, python-format
+msgid "Inject key fs=%(fs)s key=%(key)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:465
+#, python-format
+msgid "Inject key fs=%(fs)s net=%(net)s"
+msgstr ""
+
+#: nova/virt/disk/api.py:491
+#, python-format
+msgid "Inject admin password fs=%(fs)s admin_passwd=ha-ha-not-telling-you"
+msgstr ""
+
+#: nova/virt/disk/api.py:536
+msgid "Not implemented on Windows"
+msgstr ""
+
+#: nova/virt/disk/api.py:565
+#, python-format
+msgid "User %(username)s not found in password file."
+msgstr ""
+
+#: nova/virt/disk/api.py:581
+#, python-format
+msgid "User %(username)s not found in shadow file."
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:41
+#, python-format
+msgid ""
+"Instance for format imgfile=%(imgfile)s mountdir=%(mountdir)s "
+"partition=%(partition)s imgfmt=%(imgfmt)s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:45 nova/virt/disk/mount/api.py:61
+#: nova/virt/disk/vfs/localfs.py:67
+msgid "Using LoopMount"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:50 nova/virt/disk/mount/api.py:66
+#: nova/virt/disk/vfs/localfs.py:72
+msgid "Using NbdMount"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:57
+#, python-format
+msgid ""
+"Instance for device imgfile=%(imgfile)s mountdir=%(mountdir)s "
+"partition=%(partition)s device=%(device)s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:117
+msgid "Device allocation failed. Will retry in 2 seconds."
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:120
+msgid "Device allocation failed after repeated retries."
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:135
+#, python-format
+msgid "Map dev %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:140
+#, python-format
+msgid "partition search unsupported with %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:156
+#, python-format
+msgid "partition %s not found"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:157
+#, python-format
+msgid "Failed to map partitions: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:179
+#, python-format
+msgid "Unmap dev %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:187
+#, python-format
+msgid "Mount %(dev)s on %(dir)s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:192
+#, python-format
+msgid "Failed to mount filesystem: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:203
+#, python-format
+msgid "Umount %s"
+msgstr ""
+
+#: nova/virt/disk/mount/api.py:214
+msgid "Fail to mount, tearing back down"
+msgstr ""
+
+#: nova/virt/disk/mount/loop.py:33
+#, python-format
+msgid "Could not attach image to loopback: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/loop.py:34
+#, python-format
+msgid "Loop mount error: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/loop.py:40
+#, python-format
+msgid "Got loop device %s"
+msgstr ""
+
+#: nova/virt/disk/mount/loop.py:58
+#, python-format
+msgid "Release loop device %s"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:55 nova/virt/disk/mount/nbd.py:69
+msgid "No free nbd devices"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:60
+msgid "nbd module not loaded"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:61
+msgid "nbd unavailable: module not loaded"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:86
+#, python-format
+msgid "Get nbd device %(dev)s for %(imgfile)s"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:91
+#, python-format
+msgid "qemu-nbd error: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:92 nova/virt/disk/mount/nbd.py:105
+#, python-format
+msgid "NBD mount error: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:104
+#, python-format
+msgid "nbd device %s did not show up"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:111
+#, python-format
+msgid "Detaching from erroneous nbd device returned error: %s"
+msgstr ""
+
+#: nova/virt/disk/mount/nbd.py:126
+#, python-format
+msgid "Release nbd device %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/api.py:27
+#, python-format
+msgid ""
+"Instance for image imgfile=%(imgfile)s imgfmt=%(imgfmt)s "
+"partition=%(partition)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/api.py:32
+msgid "Trying to import guestfs"
+msgstr ""
+
+#: nova/virt/disk/vfs/api.py:39
+msgid "Using primary VFSGuestFS"
+msgstr ""
+
+#: nova/virt/disk/vfs/api.py:44
+msgid "Falling back to VFSLocalFS"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:55
+#, python-format
+msgid "Mount guest OS image %(imgfile)s partition %(part)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:64
+#, python-format
+msgid "Inspecting guest OS image %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:68
+#, python-format
+msgid "No operating system found in %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:72
+#, python-format
+msgid "Multi-boot OS %(roots)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:74
+#, python-format
+msgid "Multi-boot operating system found in %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:80
+#, python-format
+msgid "Inspecting guest OS root filesystem %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:85
+#, python-format
+msgid "No mount points found in %(root)s of %(imgfile)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:90
+#, python-format
+msgid "Mounting %(dev)s at %(dir)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:95
+#, python-format
+msgid "Setting up appliance for %(imgfile)s %(imgfmt)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:113
+#, python-format
+msgid "Error mounting %(imgfile)s with libguestfs (%(e)s)"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:120
+msgid "Tearing down appliance"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:126
+#, python-format
+msgid "Failed to close augeas %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:134
+#, python-format
+msgid "Failed to shutdown appliance %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:142
+#, python-format
+msgid "Failed to close guest handle %s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:154 nova/virt/disk/vfs/localfs.py:102
+#, python-format
+msgid "Make directory path=%(path)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:159 nova/virt/disk/vfs/localfs.py:107
+#, python-format
+msgid "Append file path=%(path)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:164 nova/virt/disk/vfs/localfs.py:116
+#, python-format
+msgid "Replace file path=%(path)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:169 nova/virt/disk/vfs/localfs.py:125
+#, python-format
+msgid "Read file path=%(path)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:174 nova/virt/disk/vfs/localfs.py:131
+#, python-format
+msgid "Has file path=%(path)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:183
+#, python-format
+msgid "Set permissions path=%(path)s mode=%(mode)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:188
+#, python-format
+msgid "Set ownership path=%(path)s user=%(user)s group=%(group)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/guestfs.py:201
+#, python-format
+msgid "chown uid=%(uid)d gid=%(gid)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:46
+#, python-format
+msgid "File path %s not valid"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:80
+#, python-format
+msgid "Failed to mount image %(ex)s)"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:90
+#, python-format
+msgid "Failed to unmount %(imgdir)s: %(ex)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:96
+#, python-format
+msgid "Failed to remove %(imgdir)s: %(ex)s"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:139
+#, python-format
+msgid "Set permissions path=%(path)s mode=%(mode)o"
+msgstr ""
+
+#: nova/virt/disk/vfs/localfs.py:144
+#, python-format
+msgid "Set permissions path=%(path)s user=%(user)s group=%(group)s"
+msgstr ""
+
+#: nova/virt/hyperv/basevolumeutils.py:71
+msgid "The ISCSI initiator name can't be found. Choosing the default one"
+msgstr ""
+
+#: nova/virt/hyperv/driver.py:150
+msgid "plug_vifs called"
+msgstr ""
+
+#: nova/virt/hyperv/driver.py:153
+msgid "unplug_vifs called"
+msgstr ""
+
+#: nova/virt/hyperv/driver.py:156
+msgid "ensure_filtering_rules_for_instance called"
+msgstr ""
+
+#: nova/virt/hyperv/driver.py:160
+msgid "unfilter_instance called"
+msgstr ""
+
+#: nova/virt/hyperv/driver.py:191
+msgid "get_console_output called"
+msgstr ""
+
+#: nova/virt/hyperv/hostops.py:93
+#, python-format
+msgid "Windows version: %s "
+msgstr ""
+
+#: nova/virt/hyperv/hostops.py:105
+msgid "get_available_resource called"
+msgstr ""
+
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
+#: nova/virt/xenapi/host.py:148
+msgid "Updating host stats"
+msgstr ""
+
+#: nova/virt/hyperv/hostops.py:159
+msgid "get_host_stats called"
+msgstr ""
+
+#: nova/virt/hyperv/hostops.py:174
+#, python-format
+msgid "Host IP address is: %s"
+msgstr ""
+
+#: nova/virt/hyperv/imagecache.py:48
+#, python-format
+msgid "The image is not a valid VHD: %s"
+msgstr ""
+
+#: nova/virt/hyperv/imagecache.py:68
+#, python-format
+msgid ""
+"Cannot resize the image to a size smaller than the VHD max. internal "
+"size: %(vhd_size)s. Requested disk size: %(root_vhd_size)s"
+msgstr ""
+
+#: nova/virt/hyperv/imagecache.py:83
+#, python-format
+msgid "Copying VHD %(vhd_path)s to %(resized_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/imagecache.py:86
+#, python-format
+msgid "Resizing VHD %(resized_vhd_path)s to new size %(root_vhd_size)s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:45
+msgid "live_migration called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:55
+#, python-format
+msgid "Calling live migration recover_method for instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:59
+#, python-format
+msgid "Calling live migration post_method for instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:65
+msgid "pre_live_migration called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:78
+msgid "post_live_migration_at_destination called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:85
+msgid "check_can_live_migrate_destination called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:90
+msgid "check_can_live_migrate_destination_cleanup called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationops.py:94
+msgid "check_can_live_migrate_source called"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:43
+#, python-format
+msgid "Live migration is not supported on target host \"%s\""
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:46
+#, python-format
+msgid "Target live migration host \"%s\" is unreachable"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:49
+#, python-format
+msgid "Live migration failed: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:61
+msgid "Live migration is not enabled on this host"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:64
+msgid "Live migration networks are not configured on this host"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
+#, python-format
+msgid "VM not found: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
+#, python-format
+msgid "Duplicate VM name found: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:77
+#, python-format
+msgid "Destroying existing remote planned VM: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:99
+#, python-format
+msgid "Creating remote planned VM for VM: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:156
+#, python-format
+msgid ""
+"Replacing host resource %(old_disk_path)s with %(new_disk_path)s on "
+"planned VM %(vm_name)s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:163
+#, python-format
+msgid "Updating remote planned VM disk paths for VM: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:199
+#, python-format
+msgid "Starting live migration for VM: %s"
+msgstr ""
+
+#: nova/virt/hyperv/livemigrationutils.py:208
+#, python-format
+msgid "Getting live migration networks for remote host: %s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:50
+msgid "Migration target is the source host"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:52
+#, python-format
+msgid "Migration target host: %s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:73
+#, python-format
+msgid "Copying disk \"%(disk_file)s\" to \"%(dest_path)s\""
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:96
+msgid "Cannot cleanup migration files"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
+msgid "migrate_disk_and_power_off called"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:133
+msgid "confirm_migration called"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:148
+msgid "finish_revert_migration called"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:166
+#, python-format
+msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:170
+#, python-format
+msgid ""
+"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
+"%(diff_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:176
+#, python-format
+msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:188
+#, python-format
+msgid "Getting info for disk: %s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:193
+#, python-format
+msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:204
+#, python-format
+msgid ""
+"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
+"%(diff_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:213
+msgid "finish_migration called"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:222
+#, python-format
+msgid "Cannot find boot VHD file: %s"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
+msgid "Cannot resize a VHD to a smaller size"
+msgstr ""
+
+#: nova/virt/hyperv/networkutils.py:46
+#, python-format
+msgid "vswitch \"%s\" not found"
+msgstr ""
+
+#: nova/virt/hyperv/networkutils.py:59
+#, python-format
+msgid "Failed to create vswitch port %(port_name)s on switch %(vswitch_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/pathutils.py:71
+#, python-format
+msgid "The file copy from %(src)s to %(dest)s failed"
+msgstr ""
+
+#: nova/virt/hyperv/pathutils.py:92
+#, python-format
+msgid "Creating directory: %s"
+msgstr ""
+
+#: nova/virt/hyperv/pathutils.py:97 nova/virt/hyperv/snapshotops.py:116
+#, python-format
+msgid "Removing directory: %s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:56
+#, python-format
+msgid "Creating snapshot for instance %s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:65
+#, python-format
+msgid "Getting info for VHD %s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:73
+#, python-format
+msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:83
+#, python-format
+msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:88
+#, python-format
+msgid ""
+"Reconnecting copied base VHD %(dest_base_disk_path)s and diff VHD "
+"%(dest_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:94
+#, python-format
+msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:99
+#, python-format
+msgid ""
+"Updating Glance image %(image_id)s with content from merged disk "
+"%(image_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:105
+#, python-format
+msgid "Snapshot image %(image_id)s updated for VM %(instance_name)s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:109
+#, python-format
+msgid "Removing snapshot %s"
+msgstr ""
+
+#: nova/virt/hyperv/snapshotops.py:113
+#, python-format
+msgid "Failed to remove snapshot for VM %s"
+msgstr ""
+
+#: nova/virt/hyperv/vif.py:75
+#, python-format
+msgid "Creating vswitch port for instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:91
+#, python-format
+msgid "VIF driver not found for network_api_class: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:100
+msgid "get_info called for instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:121
+#, python-format
+msgid ""
+"Creating differencing VHD. Parent: %(base_vhd_path)s, Target: "
+"%(root_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:127
+#, python-format
+msgid "Copying VHD image %(base_vhd_path)s to target: %(root_vhd_path)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:139
+#, python-format
+msgid "Resizing VHD %(root_vhd_path)s to new size %(root_vhd_size)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:152
+msgid "Spawning new instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:178
+msgid "Spawn instance failed"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:203
+#, python-format
+msgid "Creating nic for instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:211
+#, python-format
+msgid "Invalid config_drive_format \"%s\""
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:214
+#, python-format
+msgid "Using config drive for instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
+#, python-format
+msgid "Creating config drive at %(path)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
+#, python-format
+msgid "Creating config drive failed with error: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:271
+#, python-format
+msgid "Got request to destroy instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:284
+#, python-format
+msgid "Instance not found: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:290
+#, python-format
+msgid "Failed to destroy instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:295
+msgid "reboot instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:301
+msgid "Pause instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:307
+msgid "Unpause instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:313
+msgid "Suspend instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:319
+msgid "Resume instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:325
+msgid "Power off instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:331
+msgid "Power on instance"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:338
+#, python-format
+msgid "Successfully changed state of VM %(vm_name)s to: %(req_state)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmops.py:342
+#, python-format
+msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:83
+#, python-format
+msgid "Cannot get VM summary data for: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:160
+#, python-format
+msgid "Creating VM %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:169
+#, python-format
+msgid "Setting memory for vm %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:172
+#, python-format
+msgid "Set vCPUs for vm %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:270
+msgid "Controller not found"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:332
+#, python-format
+msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:373
+#, python-format
+msgid "Operation failed with return value: %s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:391
+#, python-format
+msgid ""
+"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
+" - %(err_desc)s - Error code: %(err_code)d"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:399
+#, python-format
+msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:403
+#, python-format
+msgid "WMI job failed with status %(job_state)d. No error description available"
+msgstr ""
+
+#: nova/virt/hyperv/vmutils.py:409
+#, python-format
+msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:98
+#, python-format
+msgid ""
+"Already logged in on storage target. No need to login. Portal: "
+"%(target_portal)s, IQN: %(target_iqn)s, LUN: %(target_lun)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:102
+#, python-format
+msgid ""
+"Logging in on storage target. Portal: %(target_portal)s, IQN: "
+"%(target_iqn)s, LUN: %(target_lun)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:115
+#, python-format
+msgid "Attach_volume: %(connection_info)s to %(instance_name)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:145
+#, python-format
+msgid "Attach volume failed: %s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:147
+#, python-format
+msgid "Unable to attach volume to instance %s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:160
+#, python-format
+msgid "Logging off storage target %(target_iqn)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:165
+#, python-format
+msgid "Detach_volume: %(connection_info)s from %(instance_name)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:176
+#, python-format
+msgid "Detaching physical disk from instance: %s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
+msgid "Could not determine iscsi initiator name"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:198 nova/virt/hyperv/volumeops.py:211
+#, python-format
+msgid "Unable to find a mounted disk for target_iqn: %s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeops.py:200
+#, python-format
+msgid "Device number: %(device_number)s, target lun: %(target_lun)s"
+msgstr ""
+
+#: nova/virt/hyperv/volumeutils.py:51
+#, python-format
+msgid "An error has occurred when calling the iscsi initiator: %s"
+msgstr ""
+
+#: nova/virt/libvirt/blockinfo.py:127
+#, python-format
+msgid "Unable to determine disk prefix for %s"
+msgstr ""
+
+#: nova/virt/libvirt/blockinfo.py:174
+#, python-format
+msgid "No free disk device names for prefix '%s'"
+msgstr ""
+
+#: nova/virt/libvirt/blockinfo.py:264
+#, python-format
+msgid "Unable to determine disk bus for '%s'"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:346
+#, python-format
+msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:552
+#, python-format
+msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:560
+#, python-format
+msgid "Connecting to libvirt: %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:577
+#, python-format
+msgid "URI %s does not support events"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:593
+msgid "Connection to libvirt broke"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
+#, python-format
+msgid "Can not handle authentication request for %d credentials"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:636
+#, python-format
+msgid "Connection to libvirt failed: %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:727
+#, python-format
+msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:742
+msgid "During wait destroy, instance disappeared."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:747
+msgid "Instance destroyed successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:757
+msgid "Instance may be started again."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:767
+msgid "Going to destroy instance again."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:786
+msgid "Error from libvirt during undefineFlags. Retrying with undefine"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:802
+#, python-format
+msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:822
+msgid "Instance may be still running, destroy it again."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:828
+#, python-format
+msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:856
+#, python-format
+msgid "Deleting instance files %(target)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:865
+#, python-format
+msgid "Failed to cleanup directory %(target)s: %(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:908
+msgid "Could not determine fibre channel world wide node names"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:915
+msgid "Could not determine fibre channel world wide port names"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:920
+msgid "No Volume Connector found."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1042
+msgid "During detach_volume, instance disappeared."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1066
+msgid "attaching network adapter failed."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1086
+msgid "During detach_interface, instance disappeared."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1090
+msgid "detaching network adapter failed."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1179
+msgid "Beginning live snapshot process"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1182
+msgid "Beginning cold snapshot process"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1211
+msgid "Snapshot extracted, beginning image upload"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1223
+msgid "Snapshot image upload complete"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1296
+msgid "Instance soft rebooted successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1300
+msgid "Failed to soft reboot instance."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1335
+msgid "Instance shutdown successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1343
+msgid "Instance may have been rebooted during soft reboot, so return now."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1391
+msgid "Instance rebooted successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1537
+msgid "Instance is running"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
+msgid "Instance spawned successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1560
+#, python-format
+msgid "data: %(data)r, fpath: %(fpath)r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
+#, python-format
+msgid "Truncated console log returned, %d bytes ignored"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1612
+msgid "Guest does not have a console available"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1681
+#, python-format
+msgid "Path '%(path)s' supports direct I/O"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1685
+#, python-format
+msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
+#, python-format
+msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1766
+msgid "Creating image"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1867
+msgid "Using config drive"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1916
+#, python-format
+msgid "Injecting %(inj)s into image %(img_id)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1926
+#, python-format
+msgid "Error injecting data into image %(img_id)s (%(e)s)"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1983
+#, python-format
+msgid ""
+"Config requested an explicit CPU model, but the current libvirt "
+"hypervisor '%s' does not support selecting CPU models"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1989
+msgid "Config requested a custom CPU model, but no model name was provided"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1993
+msgid "A CPU model name should not be set when a host CPU model is requested"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:1997
+#, python-format
+msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2013
+msgid ""
+"Passthrough of the host CPU was requested but this libvirt version does "
+"not support this feature"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2337
+#, python-format
+msgid ""
+"Start to_xml instance=%(instance)s network_info=%(network_info)s "
+"disk_info=%(disk_info)s image_meta=%(image_meta)s "
+"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2352
+#, python-format
+msgid "End to_xml instance=%(instance)s xml=%(xml)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2369
+#, python-format
+msgid ""
+"Error from libvirt while looking up %(instance_name)s: [Error Code "
+"%(error_code)s] %(ex)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
+msgid ""
+"Cannot get the number of cpu, because this function is not implemented "
+"for this platform. "
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
+#, python-format
+msgid "couldn't obtain the vpu count from domain id: %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2657
+#, python-format
+msgid "List of domains returned by libVirt: %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2659
+#, python-format
+msgid "libVirt can't find a domain with id: %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2723
+msgid "libvirt version is too old (does not support getVersion)"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2807
+#, python-format
+msgid "Trying to get stats for the volume %s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2820
+#, python-format
+msgid ""
+"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
+"rd_req=%(rd_req)d, rd_bytes=%(rd_bytes)d, wr_req=%(wr_req)d, "
+"wr_bytes=%(wr_bytes)d"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2838
+#, python-format
+msgid ""
+"Getting block stats failed, device might have been detached. "
+"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2843
+#, python-format
+msgid ""
+"Could not find domain in libvirt for instance %s. Cannot get block stats "
+"for device"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2920
+#, python-format
+msgid ""
+"Creating tmpfile %s to verify with other compute node that the instance "
+"is on the same shared storage."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3002
+msgid "Block migration can not be used with shared storage."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3010
+msgid "Live migration can not be used without shared storage."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3047
+#, python-format
+msgid ""
+"Unable to migrate %(instance_uuid)s: Disk of instance is too "
+"large(available on destination host:%(available)s < need:%(necessary)s)"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3072
+#, python-format
+msgid ""
+"Instance launched has CPU info:\n"
+"%s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3084
+#, python-format
+msgid ""
+"CPU doesn't have compatibility.\n"
+"\n"
+"%(ret)s\n"
+"\n"
+"Refer to %(u)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3101
+#, python-format
+msgid ""
+"Creating tmpfile %s to notify to other compute nodes that they should "
+"mount the same storage."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3149
+#, python-format
+msgid "The firewall filter for %s does not exist"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3221
+#, python-format
+msgid "Live Migration failure: %(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3314
+#, python-format
+msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3426
+#, python-format
+msgid ""
+"Error from libvirt while getting description of %(instance_name)s: [Error"
+" Code %(error_code)s] %(ex)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3443
+#, python-format
+msgid "skipping %(path)s since it looks like volume"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3448
+#, python-format
+msgid "skipping disk for %(instance_name)s as it does not have a path"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3489
+#, python-format
+msgid "Getting disk size of %(i_name)s: %(e)s"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3558
+msgid "Starting migrate_disk_and_power_off"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3619
+msgid "Instance running successfully."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3625
+msgid "Starting finish_migration"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3687
+msgid "Starting finish_revert_migration"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:3808
+#, python-format
+msgid "Checking instance files accessability%(instance_path)s"
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:51
+msgid ""
+"Libvirt module could not be loaded. NWFilterFirewall will not work "
+"correctly."
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:107
+msgid "Called setup_basic_filtering in nwfilter"
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:115
+msgid "Ensuring static filters"
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:247
+#, python-format
+msgid "The nwfilter(%(instance_filter_name)s) is not found."
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:270
+#, python-format
+msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found."
+msgstr ""
+
+#: nova/virt/libvirt/firewall.py:286
+msgid "iptables firewall: Setup Basic Filtering"
+msgstr ""
+
+#: nova/virt/libvirt/imagebackend.py:298
+msgid "You should specify libvirt_images_volume_group flag to use LVM images."
+msgstr ""
+
+#: nova/virt/libvirt/imagebackend.py:383
+#, python-format
+msgid "Unknown image_type=%s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:140
+#, python-format
+msgid "Error reading image info file %(filename)s: %(error)s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:180
+#, python-format
+msgid "Reading image info file: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:202
+#, python-format
+msgid "Writing stored info to %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:332
+#, python-format
+msgid "%s is a valid instance name"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:335
+#, python-format
+msgid "%s has a disk file"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:337
+#, python-format
+msgid "Instance %(instance)s is backed by %(backing)s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:350
+#, python-format
+msgid ""
+"Instance %(instance)s is using a backing file %(backing)s which does not "
+"appear in the image service"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:426
+#, python-format
+msgid "image %(id)s at (%(base_file)s): image verification failed"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:436
+#, python-format
+msgid ""
+"image %(id)s at (%(base_file)s): image verification skipped, no hash "
+"stored"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:445
+#, python-format
+msgid "%(id)s (%(base_file)s): generating checksum"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:460
+#, python-format
+msgid "Cannot remove %(base_file)s, it does not exist"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:472
+#, python-format
+msgid "Base file too young to remove: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:475
+#, python-format
+msgid "Removing base file: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:482
+#, python-format
+msgid "Failed to remove %(base_file)s, error was %(error)s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:493
+#, python-format
+msgid "image %(id)s at (%(base_file)s): checking"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:517
+#, python-format
+msgid ""
+"image %(id)s at (%(base_file)s): in use: on this node %(local)d local, "
+"%(remote)d on other nodes sharing this instance storage"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:529
+#, python-format
+msgid ""
+"image %(id)s at (%(base_file)s): warning -- an absent base file is in "
+"use! instances: %(instance_list)s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:541
+#, python-format
+msgid "image %(id)s at (%(base_file)s): image is not in use"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:548
+#, python-format
+msgid "image %(id)s at (%(base_file)s): image is in use"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:572
+#, python-format
+msgid "Skipping verification, no base directory at %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:576
+msgid "Verify base images"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:583
+#, python-format
+msgid "Image id %(id)s yields fingerprint %(fingerprint)s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:601
+#, python-format
+msgid "Unknown base file: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:606
+#, python-format
+msgid "Active base files: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:609
+#, python-format
+msgid "Corrupt base files: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:613
+#, python-format
+msgid "Removable base files: %s"
+msgstr ""
+
+#: nova/virt/libvirt/imagecache.py:621
+msgid "Verification complete"
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:72 nova/virt/libvirt/utils.py:78
+msgid "systool is not installed"
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:82
+msgid "Cannot find any Fibre Channel HBAs"
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:224
+#, python-format
+msgid ""
+"Insufficient Space on Volume Group %(vg)s. Only %(free_space)db "
+"available, but %(size)db required by volume %(lv)s."
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:233
+#, python-format
+msgid ""
+"Volume group %(vg)s will not be able to hold sparse volume %(lv)s. "
+"Virtual volume size is %(size)db, but free space on volume group is only "
+"%(free_space)db."
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:264
+#, python-format
+msgid "vg %s must be LVM volume group"
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:293
+#, python-format
+msgid "Path %s must be LVM logical volume"
+msgstr ""
+
+#: nova/virt/libvirt/utils.py:558
+msgid "Can't retrieve root device path from instance libvirt configuration"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:265 nova/virt/libvirt/vif.py:386
+#: nova/virt/libvirt/vif.py:473
+#, python-format
+msgid ""
+"vif_type=%(vif_type)s instance=%(instance)s network=%(network)s "
+"mapping=%(mapping)s"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:271 nova/virt/libvirt/vif.py:392
+#: nova/virt/libvirt/vif.py:479
+msgid "vif_type parameter must be present for this vif_driver implementation"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:292 nova/virt/libvirt/vif.py:405
+#: nova/virt/libvirt/vif.py:492
+#, python-format
+msgid "Unexpected vif_type=%s"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:304
+#, python-format
+msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:314
+#, python-format
+msgid "Ensuring bridge %s"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:422 nova/virt/libvirt/vif.py:451
+msgid "Failed while unplugging vif"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:501
+msgid ""
+"The LibvirtBridgeDriver VIF driver is now deprecated and will be removed "
+"in the next release. Please use the LibvirtGenericVIFDriver VIF driver, "
+"together with a network plugin that reports the 'vif_type' attribute"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:527
+msgid ""
+"The LibvirtOpenVswitchDriver VIF driver is now deprecated and will be "
+"removed in the next release. Please use the LibvirtGenericVIFDriver VIF "
+"driver, together with a network plugin that reports the 'vif_type' "
+"attribute"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:555
+msgid ""
+"The LibvirtHybridOVSBridgeDriver VIF driver is now deprecated and will be"
+" removed in the next release. Please use the LibvirtGenericVIFDriver VIF "
+"driver, together with a network plugin that reports the 'vif_type' "
+"attribute"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:583
+msgid ""
+"The LibvirtOpenVswitchVirtualPortDriver VIF driver is now deprecated and "
+"will be removed in the next release. Please use the "
+"LibvirtGenericVIFDriver VIF driver, together with a network plugin that "
+"reports the 'vif_type' attribute"
+msgstr ""
+
+#: nova/virt/libvirt/vif.py:609
+msgid ""
+"The QuantumLinuxBridgeVIFDriver VIF driver is now deprecated and will be "
+"removed in the next release. Please use the LibvirtGenericVIFDriver VIF "
+"driver, together with a network plugin that reports the 'vif_type' "
+"attribute"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:239
+#, python-format
+msgid "iSCSI device not found at %s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:242
+#, python-format
+msgid ""
+"ISCSI volume not yet found at: %(disk_dev)s. Will rescan & retry. Try "
+"number: %(tries)s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:254
+#, python-format
+msgid "Found iSCSI node %(disk_dev)s (after %(tries)s rescans)"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:490 nova/virt/libvirt/volume.py:611
+#, python-format
+msgid "%s is already mounted"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:546
+#, python-format
+msgid "AoE device not found at %s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:548
+#, python-format
+msgid "AoE volume not yet found at: %(aoedevpath)s. Try number: %(tries)s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:562
+#, python-format
+msgid "Found AoE device %(aoedevpath)s (after %(tries)s rediscover)"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:690
+msgid "We are unable to locate any Fibre Channel devices"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:699
+#, python-format
+msgid "Looking for Fibre Channel dev %(device)s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:709
+msgid "Fibre Channel device not found."
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:712
+#, python-format
+msgid ""
+"Fibre volume not yet found at: %(mount_device)s. Will rescan & retry. "
+"Try number: %(tries)s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:728
+#, python-format
+msgid "Found Fibre Channel volume %(mount_device)s (after %(tries)s rescans)"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:735
+#, python-format
+msgid "Multipath device discovered %(device)s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:801
+msgid "Value required for 'scality_sofs_config'"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:812
+#, python-format
+msgid "Cannot access 'scality_sofs_config': %s"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:818
+msgid "Cannot execute /sbin/mount.sofs"
+msgstr ""
+
+#: nova/virt/libvirt/volume.py:833
+msgid "Cannot mount Scality SOFS, check syslog for errors"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:149
+#, python-format
+msgid "Removing the logical volume '%s'"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:167
+#, python-format
+msgid "Fetching image '%s' from glance"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:172
+#, python-format
+msgid "Using image found at '%s'"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:174
+#, python-format
+msgid "Ensuring image '%s' exists on IVM"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:185
+#, python-format
+msgid "Creating logical volume of size %s bytes"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:188
+#, python-format
+msgid "Copying image to the device '%s'"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:191
+msgid "Error while creating logical volume from image. Will attempt cleanup."
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:198
+msgid "Error while attempting cleanup of failed deploy to logical volume."
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:244
+msgid "Snapshot added to glance."
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:250
+#, python-format
+msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:335
+msgid "Could not create logical volume. No space left on any volume group."
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
+msgid "Unable to get checksum"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
+msgid "Image checksums do not match"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:450
+#, python-format
+msgid "Image found on host at '%s'"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:458
+msgid "Uncompressed image file not found"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
+#, python-format
+msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
+msgstr ""
+
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
+#, python-format
+msgid "Found error stream for command \"%(command)s\": %(error_text)s"
+msgstr ""
+
+#: nova/virt/powervm/common.py:68
+msgid "Connection error connecting PowerVM manager"
+msgstr ""
+
+#: nova/virt/powervm/common.py:101
+#, python-format
+msgid "Running cmd (SSH-as-root): %s"
+msgstr ""
+
+#: nova/virt/powervm/common.py:150
+msgid "File transfer to PowerVM manager failed"
+msgstr ""
+
+#: nova/virt/powervm/common.py:169
+#, python-format
+msgid "ftp GET %(remote_path)s to: %(local_path)s"
+msgstr ""
+
+#: nova/virt/powervm/common.py:175
+msgid "File transfer from PowerVM manager failed"
+msgstr ""
+
+#: nova/virt/powervm/driver.py:124
+msgid "In get_host_ip_addr"
+msgstr ""
+
+#: nova/virt/powervm/driver.py:127
+#, python-format
+msgid "Attempting to resolve %s"
+msgstr ""
+
+#: nova/virt/powervm/driver.py:129
+#, python-format
+msgid "%(hostname)s was successfully resolved to %(ip_addr)s"
+msgstr ""
+
+#: nova/virt/powervm/driver.py:174
+#, python-format
+msgid "%(inst_name)s captured in %(snapshot_time)s seconds"
+msgstr ""
+
+#: nova/virt/powervm/driver.py:305
+#, python-format
+msgid "Unrecognized root disk information: %s"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:21
+msgid "Connection to PowerVM manager failed"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:25
+#, python-format
+msgid "File '%(file_path)s' transfer to PowerVM manager failed"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:29
+#, python-format
+msgid "FTP %(ftp_cmd)s from %(source_path)s to %(dest_path)s failed"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:33
+#, python-format
+msgid "LPAR instance '%(instance_name)s' could not be found"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:37
+#, python-format
+msgid "LPAR instance '%(instance_name)s' creation failed"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:41
+msgid "No space left on any volume group"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:49
+#, python-format
+msgid "Operation '%(operation)s' on LPAR '%(instance_name)s' timed out"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:54
+msgid "Image creation failed on PowerVM"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:58
+#, python-format
+msgid ""
+"Insufficient free memory on PowerVM system to spawn instance "
+"'%(instance_name)s'"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:63
+#, python-format
+msgid ""
+"Insufficient available CPUs on PowerVM system to spawn instance "
+"'%(instance_name)s'"
+msgstr ""
+
+#: nova/virt/powervm/exception.py:68
+#, python-format
+msgid "PowerVM LPAR instance '%(instance_name)s' cleanup failed"
+msgstr ""
+
+#: nova/virt/powervm/lpar.py:55
+#, python-format
+msgid ""
+"Encountered unknown LPAR attribute: %s\n"
+"Continuing without storing"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:99
+#, python-format
+msgid "LPAR instance '%s' not found"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:187
+#, python-format
+msgid "PowerVM image creation failed: %s"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:201
+#, python-format
+msgid "Creating LPAR instance '%s'"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:203
+#, python-format
+msgid "LPAR instance '%s' creation failed"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:209
+#, python-format
+msgid "Activating the LPAR instance '%s'"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:226
+#, python-format
+msgid "Instance '%s' failed to boot"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:238
+msgid "Error while attempting to clean up failed instance launch."
+msgstr ""
+
+#: nova/virt/powervm/operator.py:242
+#, python-format
+msgid "Instance spawned in %s seconds"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:253
+#, python-format
+msgid "During destroy, LPAR instance '%s' was not found on PowerVM system."
+msgstr ""
+
+#: nova/virt/powervm/operator.py:272
+#, python-format
+msgid "Stopping instance %s for snapshot."
+msgstr ""
+
+#: nova/virt/powervm/operator.py:295
+#, python-format
+msgid "Shutting down the instance '%s'"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:300
+#, python-format
+msgid "Deleting the LPAR instance '%s'"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:312
+msgid "PowerVM instance cleanup failed"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:334 nova/virt/powervm/operator.py:390
+msgid "Not enough free memory in the host"
+msgstr ""
+
+#: nova/virt/powervm/operator.py:345 nova/virt/powervm/operator.py:396
+msgid "Insufficient available CPU on PowerVM"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:138
+msgid ""
+"Must specify vmwareapi_host_ip,vmwareapi_host_username and "
+"vmwareapi_host_password to usecompute_driver=vmwareapi.VMwareESXDriver or"
+" vmwareapi.VMwareVCDriver"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:355
+#, python-format
+msgid "VMware Cluster %s is not found"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:456
+#, python-format
+msgid "In vmwareapi:_create_session, got this exception: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:539
+#, python-format
+msgid "In vmwareapi:_call_method, got this exception: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:575
+#, python-format
+msgid "Task [%(task_name)s] %(task_ref)s status: success"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:580
+#, python-format
+msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/driver.py:584
+#, python-format
+msgid "In vmwareapi:_poll_task, Got this error %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/error_util.py:93
+#, python-format
+msgid "Error(s) %s occurred in the call to RetrieveProperties"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:45 nova/virt/xenapi/fake.py:77
+#, python-format
+msgid "%(text)s: _db_content => %(content)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:132
+#, python-format
+msgid "Property %(attr)s not set for the managed object %(name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:492
+msgid "There is no VM registered"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
+#, python-format
+msgid "Virtual Machine with ref %s is not there"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:557
+#, python-format
+msgid "Logging out a session that is invalid or already logged out: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:572
+msgid "Session is faulty"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:575
+msgid "Session Invalid"
+msgstr ""
+
+#: nova/virt/vmwareapi/fake.py:666
+msgid "No Virtual Machine has been registered yet"
+msgstr ""
+
+#: nova/virt/vmwareapi/host.py:40
+#, python-format
+msgid "%(action)s %(host)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/host.py:63
+#, python-format
+msgid "Set maintenance mod on %(host)s to %(mode)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/io_util.py:112
+#, python-format
+msgid "Glance image %s is in killed state"
+msgstr ""
+
+#: nova/virt/vmwareapi/io_util.py:120
+#, python-format
+msgid "Glance image %(image_id)s is in unknown state - %(state)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/network_util.py:138
+msgid ""
+"ESX SOAP server returned an empty port group for the host system in its "
+"response"
+msgstr ""
+
+#: nova/virt/vmwareapi/network_util.py:164
+#, python-format
+msgid "Creating Port Group with name %s on the ESX host"
+msgstr ""
+
+#: nova/virt/vmwareapi/network_util.py:178
+#, python-format
+msgid "Created Port Group with name %s on the ESX host"
+msgstr ""
+
+#: nova/virt/vmwareapi/read_write_util.py:142
+#, python-format
+msgid "Exception during HTTP connection close in VMwareHTTPWrite. Exception is %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:84
+msgid "Unable to import suds."
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:169
+#, python-format
+msgid "No such SOAP method '%s' provided by VI SDK"
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:174
+#, python-format
+msgid "httplib error in %s: "
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:181
+#, python-format
+msgid "Socket error in %s: "
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:186
+#, python-format
+msgid "Type error in %s: "
+msgstr ""
+
+#: nova/virt/vmwareapi/vim.py:190
+#, python-format
+msgid "Exception in %s "
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:92
+msgid "Getting list of instances"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:108
+#, python-format
+msgid "Got total of %s instances"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:198
+msgid "Creating VM on the ESX host"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:206
+msgid "Created VM on the ESX host"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:230
+#, python-format
+msgid ""
+"Creating Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter "
+"type %(adapter_type)s on the ESX host local store %(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:249
+#, python-format
+msgid ""
+"Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type "
+"%(disk_type)s on the ESX host local store %(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:258
+#, python-format
+msgid ""
+"Deleting the file %(vmdk_path)s on the ESX host localstore "
+"%(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:272
+#, python-format
+msgid ""
+"Deleted the file %(vmdk_path)s on the ESX host local store "
+"%(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:280
+#, python-format
+msgid ""
+"Downloading image file data %(image_ref)s to the ESX data store "
+"%(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:300
+#, python-format
+msgid ""
+"Downloaded image file data %(image_ref)s to %(upload_vmdk_name)s on the "
+"ESX data store %(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:314
+#, python-format
+msgid ""
+"Copying Virtual Disk of size %(vmdk_file_size_in_kb)s KB and adapter type"
+" %(adapter_type)s on the ESX host local store %(data_store_name)s to disk"
+" type %(disk_type)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:335
+#, python-format
+msgid ""
+"Copied Virtual Disk of size %(vmdk_file_size_in_kb)s KB and type "
+"%(disk_type)s on the ESX host local store %(data_store_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:414
+msgid "Powering on the VM instance"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:420
+msgid "Powered on the VM instance"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:466
+msgid "Creating Snapshot of the VM instance"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:476
+msgid "Created Snapshot of the VM instance"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:521
+msgid "Copying disk data before snapshot of the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:534
+msgid "Copied disk data before snapshot of the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:543
+#, python-format
+msgid "Uploading image %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:557
+#, python-format
+msgid "Uploaded image %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:570
+#, python-format
+msgid "Deleting temporary vmdk file %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:579
+#, python-format
+msgid "Deleted temporary vmdk file %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:611
+msgid "instance is not powered on"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:618
+msgid "Rebooting guest OS of VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:621
+msgid "Rebooted guest OS of VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:623
+msgid "Doing hard reboot of VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:627
+msgid "Did hard reboot of VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:639 nova/virt/vmwareapi/vmops.py:671
+#: nova/virt/vmwareapi/vmops.py:964
+msgid "instance not present"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:645 nova/virt/vmwareapi/vmops.py:968
+msgid "Destroying the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:650 nova/virt/vmwareapi/vmops.py:973
+msgid "Destroyed the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:652
+#, python-format
+msgid "In vmwareapi:vmops:delete, got this exception while destroying the VM: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:690 nova/virt/vmwareapi/vmops.py:843
+msgid "Powering off the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:695 nova/virt/vmwareapi/vmops.py:848
+msgid "Powered off the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:699
+msgid "Unregistering the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:702
+msgid "Unregistered the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:704
+#, python-format
+msgid ""
+"In vmwareapi:vmops:destroy, got this exception while un-registering the "
+"VM: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:717
+#, python-format
+msgid "Deleting contents of the VM from datastore %(datastore_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:729
+#, python-format
+msgid "Deleted contents of the VM from datastore %(datastore_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:734
+#, python-format
+msgid ""
+"In vmwareapi:vmops:destroy, got this exception while deleting the VM "
+"contents from the disk: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:742
+msgid "pause not supported for vmwareapi"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:746
+msgid "unpause not supported for vmwareapi"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:760
+msgid "Suspending the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:764
+msgid "Suspended the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:767
+msgid "instance is powered off and cannot be suspended."
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:770
+msgid "VM was already in suspended state. So returning without doing anything"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:783
+msgid "Resuming the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:788
+msgid "Resumed the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:790
+msgid "instance is not in a suspended state"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:851
+msgid "instance is suspended and cannot be powered off."
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:854
+msgid "VM was already in powered off state. So returning without doing anything"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:867
+msgid "VM was already in powered on state. So returning without doing anything"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:871
+msgid "Powering on the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:876
+msgid "Powered on the VM"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:893
+#, python-format
+msgid "Updating instance '%(instance_uuid)s' progress to %(progress)d"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:924
+#, python-format
+msgid "Renaming the VM to %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:930
+#, python-format
+msgid "Renamed the VM to %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:945
+#, python-format
+msgid "Cloning VM to host %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:953
+#, python-format
+msgid "Cloned VM to host %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:975
+#, python-format
+msgid ""
+"In vmwareapi:vmops:confirm_migration, got this exception while destroying"
+" the VM: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:990
+#, python-format
+msgid "Renaming the VM from %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:996
+#, python-format
+msgid "Renamed the VM from %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1019
+#, python-format
+msgid "Migrating VM to host %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1031
+#, python-format
+msgid "Migrated VM to host %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1041 nova/virt/xenapi/vmops.py:1327
+#, python-format
+msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1045
+#, python-format
+msgid "Automatically hard rebooting %d"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1081
+msgid "get_diagnostics not implemented for vmwareapi"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1163
+msgid "Reconfiguring VM instance to set the machine id"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1169
+msgid "Reconfigured VM instance to set the machine id"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1183
+#, python-format
+msgid "Reconfiguring VM instance to enable vnc on port - %(port)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1190
+#, python-format
+msgid "Reconfigured VM instance to enable vnc on port - %(port)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1283
+#, python-format
+msgid "Creating directory with path %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmops.py:1289
+#, python-format
+msgid "Created directory with path %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:91
+#, python-format
+msgid "Downloading image %s from glance image server"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:107
+#, python-format
+msgid "Downloaded image %s from glance image server"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:113
+#, python-format
+msgid "Uploading image %s to the Glance image server"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:139
+#, python-format
+msgid "Uploaded image %s to the Glance image server"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:150
+#, python-format
+msgid "Getting image size for the image %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/vmware_images.py:155
+#, python-format
+msgid "Got image size of %(size)s for the image %(image)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volume_util.py:163
+#, python-format
+msgid "Rescanning HBA %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volume_util.py:166
+#, python-format
+msgid "Rescanned HBA %s "
+msgstr ""
+
+#: nova/virt/vmwareapi/volume_util.py:178 nova/virt/xenapi/volume_utils.py:267
+#, python-format
+msgid "Mountpoint cannot be translated: %s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:57
+#, python-format
+msgid ""
+"Reconfiguring VM instance %(instance_name)s to attach disk %(vmdk_path)s "
+"or device %(device_name)s with type %(disk_type)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:65
+#, python-format
+msgid ""
+"Reconfigured VM instance %(instance_name)s to attach disk %(vmdk_path)s "
+"or device %(device_name)s with type %(disk_type)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:77
+#, python-format
+msgid "Reconfiguring VM instance %(instance_name)s to detach disk %(disk_key)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:84
+#, python-format
+msgid "Reconfigured VM instance %(instance_name)s to detach disk %(disk_key)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:91
+#, python-format
+msgid "Discovering iSCSI target %(target_iqn)s from %(target_portal)s."
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:96
+msgid "Storage target found. No need to discover"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:104
+#, python-format
+msgid "Discovered iSCSI target %(target_iqn)s from %(target_portal)s."
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:107
+#, python-format
+msgid "Unable to discovered iSCSI target %(target_iqn)s from %(target_portal)s."
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:127 nova/virt/xenapi/volumeops.py:47
+#, python-format
+msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:138 nova/virt/vmwareapi/volumeops.py:177
+msgid "Unable to find iSCSI Target"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
+#, python-format
+msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
+#, python-format
+msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:185
+msgid "Unable to find volume"
+msgstr ""
+
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
+#, python-format
+msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
+#, python-format
+msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
+#, python-format
+msgid ""
+"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
+"args=%(args)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
+#, python-format
+msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:107
+#, python-format
+msgid ""
+"The agent call to %(method)s returned an invalid response: %(ret)r. "
+"path=%(path)s; args=%(args)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:117
+#, python-format
+msgid "Failed to query agent version: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:136
+msgid "Querying agent version"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:150
+msgid "Reached maximum time attempting to query agent version"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:158
+#, python-format
+msgid "Updating agent to %s"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:166
+#, python-format
+msgid "Failed to update agent: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:180
+msgid "Setting admin password"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:191
+#, python-format
+msgid "Failed to exchange keys: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:211
+#, python-format
+msgid "Failed to update password: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:232
+msgid "Skipping setting of ssh key for Windows."
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:247
+#, python-format
+msgid "Injecting file path: %r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:260
+#, python-format
+msgid "Failed to inject file: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:267
+msgid "Resetting network"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:273
+#, python-format
+msgid "Failed to reset network: %(resp)r"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:296
+msgid ""
+"XenServer tools installed in this image are capable of network injection."
+" Networking files will not bemanipulated"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:304
+msgid ""
+"XenServer tools are present in this image but are not capable of network "
+"injection"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:308
+msgid "XenServer tools are not installed in this image"
+msgstr ""
+
+#: nova/virt/xenapi/agent.py:360
+#, python-format
+msgid "OpenSSL error: %s"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:134
+msgid ""
+"Must specify xenapi_connection_url, xenapi_connection_username "
+"(optionally), and xenapi_connection_password to use "
+"compute_driver=xenapi.XenAPIDriver"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:161
+msgid "Failure while cleaning up attached VDIs"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:354
+#, python-format
+msgid "Could not determine key: %s"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:570
+msgid "Host startup on XenServer is not supported."
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:630
+msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:670
+msgid "Host is member of a pool, but DB says otherwise"
+msgstr ""
+
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
+#, python-format
+msgid "Got exception: %s"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:687 nova/virt/xenapi/fake.py:791
+#: nova/virt/xenapi/fake.py:810 nova/virt/xenapi/fake.py:878
+msgid "Raising NotImplemented"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:689
+#, python-format
+msgid "xenapi.fake does not have an implementation for %s"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:723
+#, python-format
+msgid "Calling %(localname)s %(impl)s"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:728
+#, python-format
+msgid "Calling getter %s"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:731
+#, python-format
+msgid "Calling setter %s"
+msgstr ""
+
+#: nova/virt/xenapi/fake.py:793
+#, python-format
+msgid ""
+"xenapi.fake does not have an implementation for %s or it has been called "
+"with the wrong number of arguments"
+msgstr ""
+
+#: nova/virt/xenapi/host.py:68
+#, python-format
+msgid ""
+"Instance %(name)s running on %(host)s could not be found in the database:"
+" assuming it is a worker VM and skip ping migration to a new host"
+msgstr ""
+
+#: nova/virt/xenapi/host.py:80
+#, python-format
+msgid "Aggregate for host %(host)s count not be found."
+msgstr ""
+
+#: nova/virt/xenapi/host.py:101
+#, python-format
+msgid "Unable to migrate VM %(vm_ref)sfrom %(host)s"
+msgstr ""
+
+#: nova/virt/xenapi/host.py:185
+#, python-format
+msgid "Failed to extract instance support from %s"
+msgstr ""
+
+#: nova/virt/xenapi/host.py:202
+msgid "Unable to get updated status"
+msgstr ""
+
+#: nova/virt/xenapi/host.py:205
+#, python-format
+msgid "The call to %(method)s returned an error: %(e)s."
+msgstr ""
+
+#: nova/virt/xenapi/network_utils.py:29
+#, python-format
+msgid "Found non-unique network for name_label %s"
+msgstr ""
+
+#: nova/virt/xenapi/network_utils.py:47
+#, python-format
+msgid "Found non-unique network for bridge %s"
+msgstr ""
+
+#: nova/virt/xenapi/network_utils.py:49
+#, python-format
+msgid "Found no network for bridge %s"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:71
+#, python-format
+msgid ""
+"Aggregate %(aggregate_id)s: unrecoverable state during operation on "
+"%(host)s"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:158
+#, python-format
+msgid "Unable to eject %(host)s from the pool; pool not empty"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:175
+#, python-format
+msgid "Unable to eject %(host)s from the pool; No master found"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:192
+#, python-format
+msgid "Pool-Join failed: %(e)s"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:195
+#, python-format
+msgid "Unable to join %(host)s in the pool"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:211
+#, python-format
+msgid "Pool-eject failed: %(e)s"
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:223
+#, python-format
+msgid "Unable to set up pool: %(e)s."
+msgstr ""
+
+#: nova/virt/xenapi/pool.py:234
+#, python-format
+msgid "Pool-set_name_label failed: %(e)s"
+msgstr ""
+
+#: nova/virt/xenapi/vif.py:101
+#, python-format
+msgid "Found no PIF for device %s"
+msgstr ""
+
+#: nova/virt/xenapi/vif.py:120
+#, python-format
+msgid ""
+"PIF %(pif_rec['uuid'])s for network %(bridge)s has VLAN id %(pif_vlan)d. "
+"Expected %(vlan_num)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:272
+msgid "Created VM"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:284
+msgid "VM destroyed"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:289 nova/virt/xenapi/vm_utils.py:304
+msgid "VM already halted, skipping shutdown..."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:293
+msgid "Shutting down VM (cleanly)"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:308
+msgid "Shutting down VM (hard)"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:346
+#, python-format
+msgid "VBD not found in instance %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:363
+#, python-format
+msgid "VBD %s already detached"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:366
+#, python-format
+msgid "VBD %(vbd_ref)s detach rejected, attempt %(num_attempt)d/%(max_attempts)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:371
+#, python-format
+msgid "Unable to unplug VBD %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:376
+#, python-format
+msgid "Reached maximum number of retries trying to unplug VBD %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:387
+#, python-format
+msgid "Unable to destroy VBD %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:409
+#, python-format
+msgid "Creating %(vbd_type)s-type VBD for VM %(vm_ref)s, VDI %(vdi_ref)s ... "
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:412
+#, python-format
+msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:438
+#, python-format
+msgid "Unable to destroy VDI %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:465
+#, python-format
+msgid ""
+"Created VDI %(vdi_ref)s (%(name_label)s, %(virtual_size)s, %(read_only)s)"
+" on %(sr_ref)s."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:479
+msgid "SR not present and could not be introduced"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:504
+#, python-format
+msgid "block device info: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:590
+#, python-format
+msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:635
+#, python-format
+msgid "No primary VDI found for %(vm_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:648
+msgid "Starting snapshot for VM"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:698
+#, python-format
+msgid "Destroying cached VDI '%(vdi_uuid)s'"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:951
+#, python-format
+msgid ""
+"Fast cloning is only supported on default local SR of type ext. SR on "
+"this system was found to be of type %(sr_type)s. Ignoring the cow flag."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1007
+#, python-format
+msgid "Unrecognized cache_images value '%s', defaulting to True"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1041
+#, python-format
+msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1053
+#, python-format
+msgid ""
+"download_vhd %(image_id)s, attempt %(attempt_num)d/%(max_attempts)d, "
+"params: %(params)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1066
+#, python-format
+msgid "download_vhd failed: %r"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1100
+#, python-format
+msgid "Invalid value '%s' for xenapi_torrent_images"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1111
+#, python-format
+msgid "Asking xapi to fetch vhd image %(image_id)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1186
+#, python-format
+msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1201
+#, python-format
+msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1205
+#, python-format
+msgid ""
+"Image size %(size_bytes)d exceeded instance_type allowed size "
+"%(allowed_size_bytes)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1227
+#, python-format
+msgid "Fetching image %(image_id)s, type %(image_type_str)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1240
+#, python-format
+msgid "Size for image %(image_id)s: %(virtual_size)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1249
+#, python-format
+msgid ""
+"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
+"bytes"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1268
+#, python-format
+msgid "Copying VDI %s to /boot/guest on dom0"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1282
+#, python-format
+msgid "Kernel/Ramdisk VDI %s destroyed"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1291
+msgid "Failed to fetch glance image"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1332
+#, python-format
+msgid "Detected %(image_type_str)s format for image %(image_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1363
+#, python-format
+msgid "Looking up vdi %s for PV kernel"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1381
+#, python-format
+msgid ""
+"Image format is None: trying to determine PV status using pygrub; if "
+"instance with vdi %s does not boot correctly, try with image metadata."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1387
+#, python-format
+msgid "Unknown image format %(disk_image_type)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1418
+#, python-format
+msgid "VDI %s is still available"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1521
+#, python-format
+msgid "Unable to parse rrd of %(vm_uuid)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1548
+#, python-format
+msgid "Re-scanning SR %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1576
+#, python-format
+msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1594
+msgid ""
+"XenAPI is unable to find a Storage Repository to install guest instances "
+"on. Please check your configuration and/or configure the flag "
+"'sr_matching_filter'"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1607
+msgid "Cannot find SR of content-type ISO"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1615
+#, python-format
+msgid "ISO: looking at SR %(sr_rec)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1617
+msgid "ISO: not iso content"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1620
+msgid "ISO: iso content_type, no 'i18n-key' key"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1623
+msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1627
+msgid "ISO: SR MATCHing our criteria"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1629
+msgid "ISO: ISO, looking to see if it is host local"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1632
+#, python-format
+msgid "ISO: PBD %(pbd_ref)s disappeared"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1635
+#, python-format
+msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1638
+msgid "ISO: SR with local PBD"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1660
+#, python-format
+msgid ""
+"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
+"%(server)s."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1676
+#, python-format
+msgid "Unable to obtain RRD XML updates with server details: %(server)s."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1730
+#, python-format
+msgid "Invalid statistics data from Xenserver: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1790
+#, python-format
+msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1877
+#, python-format
+msgid ""
+"Parent %(parent_uuid)s doesn't match original parent "
+"%(original_parent_uuid)s, waiting for coalesce..."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1887
+#, python-format
+msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1922
+#, python-format
+msgid "Timeout waiting for device %s to be created"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1942
+#, python-format
+msgid "Disconnecting stale VDI %s from compute domU"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1955
+#, python-format
+msgid "Plugging VBD %s ... "
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1958
+#, python-format
+msgid "Plugging VBD %s done."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1960
+#, python-format
+msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1963
+#, python-format
+msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1968
+#, python-format
+msgid "Destroying VBD for VDI %s ... "
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:1976
+#, python-format
+msgid "Destroying VBD for VDI %s done."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2003
+#, python-format
+msgid "Running pygrub against %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2011
+#, python-format
+msgid "Found Xen kernel %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2013
+msgid "No Xen kernel found. Booting HVM."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2015
+msgid ""
+"Error while executing pygrub! Please, ensure the binary is installed "
+"correctly, and available in your PATH; on some Linux distros, pygrub may "
+"be installed in /usr/lib/xen-X.Y/bin/pygrub. Attempting to boot in HVM "
+"mode."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2032
+msgid "Partitions:"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2038
+#, python-format
+msgid " %(num)s: %(ptype)s %(size)d sectors"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2063
+#, python-format
+msgid ""
+"Writing partition table %(primary_first)d %(primary_last)d to "
+"%(dev_path)s..."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2076
+#, python-format
+msgid "Writing partition table %s done."
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2130
+#, python-format
+msgid ""
+"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
+"virtual_size=%(virtual_size)d block_size=%(block_size)d"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2163
+#, python-format
+msgid ""
+"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
+"reduction in size"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2215
+msgid "Manipulating interface files directly"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2224
+#, python-format
+msgid "Failed to mount filesystem (expected for non-linux instances): %s"
+msgstr ""
+
+#: nova/virt/xenapi/vm_utils.py:2336
+msgid "This domU must be running on the host specified by xenapi_connection_url"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:139 nova/virt/xenapi/vmops.py:795
+#, python-format
+msgid "Updating progress to %(progress)d"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:174
+#, python-format
+msgid "Importing image upload handler: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:187
+msgid "Error: Agent is disabled"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:295
+msgid "Starting instance"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:381
+msgid "Removing kernel/ramdisk files from dom0"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:454
+#, python-format
+msgid "Block device information present: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:485
+msgid "Failed to spawn, rolling back"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:584
+msgid "Auto configuring disk, attempting to resize partition..."
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:630
+msgid "Starting VM"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:636
+msgid "Waiting for instance state to become running"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:650
+#, python-format
+msgid ""
+"Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is "
+"%(version)s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:653
+#, python-format
+msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:664
+#, python-format
+msgid "Instance agent version: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:695
+msgid "Setting VCPU weight"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:706
+#, python-format
+msgid "Could not find VM with name %s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:764
+msgid "Finished snapshot and upload for VM"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:768
+#, python-format
+msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:776
+msgid "Failed to transfer vhd to new host"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:813
+#, python-format
+msgid "Resizing down VDI %(vdi_uuid)s from %(old_gb)dGB to %(new_gb)dGB"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:819 nova/virt/xenapi/vmops.py:869
+msgid "Clean shutdown did not complete successfully, trying hard shutdown."
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:898
+msgid "Resize down not allowed without auto_disk_config"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:943
+#, python-format
+msgid "Resizing up VDI %(vdi_uuid)s from %(old_gb)dGB to %(new_gb)dGB"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:948
+msgid "Resize complete"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:992
+msgid "Starting halted instance found during reboot"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:998
+msgid ""
+"Reboot failed due to bad volumes, detaching bad volumes and starting "
+"halted instance"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1092
+msgid "Unable to find root VBD/VDI for VM"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1096
+msgid "Destroying VDIs"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1123
+msgid "Using RAW or VHD, skipping kernel and ramdisk deletion"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1130
+msgid "instance has a kernel or ramdisk but not both"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1137
+msgid "kernel/ramdisk files removed"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1164
+msgid "Destroying VM"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1193
+msgid "VM is not present, skipping destroy..."
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1244
+#, python-format
+msgid "Instance is already in Rescue Mode: %s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1278
+msgid "VM is not present, skipping soft delete..."
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1331
+msgid "Automatically hard rebooting"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1471
+msgid "Injecting network info to xenstore"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1490
+msgid "Creating vifs"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1499
+#, python-format
+msgid "Creating VIF for network %(network_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1502
+#, python-format
+msgid "Created VIF %(vif_ref)s, network %(network_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1530
+msgid "Injecting hostname to xenstore"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1628
+#, python-format
+msgid ""
+"Destination host:%(hostname)s must be in the same aggregate as the source"
+" server"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1649
+msgid "No suitable network for migrate"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1661
+msgid "Migrate Receive failed"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
+msgid "VM.assert_can_migrate failed"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1799
+msgid "Migrate Send failed"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:51
+#, python-format
+msgid "Creating SR %(label)s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:61
+#, python-format
+msgid "Introducing SR %(label)s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:68
+msgid "Creating PBD for SR"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:71
+msgid "Plugging SR"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:82
+msgid "Forgetting SR..."
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:104
+#, python-format
+msgid "Unable to find SR from VBD %s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:121
+#, python-format
+msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:129
+#, python-format
+msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:153
+#, python-format
+msgid "Unable to introduce VDI on SR %s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:161
+#, python-format
+msgid "Unable to get record of VDI %s on"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:183
+#, python-format
+msgid "Unable to introduce VDI for SR %s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:193
+msgid "Cannot purge SR with referenced VDIs"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:202
+#, python-format
+msgid "Unable to obtain target information %(mountpoint)s"
+msgstr ""
+
+#: nova/virt/xenapi/volume_utils.py:241
+#, python-format
+msgid "Unable to obtain target information %(connection_data)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:70
+#, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr ""
+
+#: nova/virt/xenapi/volumeops.py:139
+#, python-format
+msgid "Skipping detach because VBD for %(instance_name)s was not found"
+msgstr ""
+
+#: nova/virt/xenapi/imageupload/glance.py:64
+#, python-format
+msgid ""
+"Asking xapi to upload to glance %(vdi_uuids)s as ID %(image_id)s glance "
+"server: %(glance_host)s:%(glance_port)d attempt "
+"%(attempt_num)d/%(max_attempts)d"
+msgstr ""
+
+#: nova/virt/xenapi/imageupload/glance.py:77
+#, python-format
+msgid "upload_vhd failed: %r"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:95 nova/vnc/xvp_proxy.py:100
+#, python-format
+msgid "Error in handshake: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:116
+#, python-format
+msgid "Invalid request: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:136
+#, python-format
+msgid "Request: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:139
+#, python-format
+msgid "Request made with missing token: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:149
+#, python-format
+msgid "Request made with invalid token: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:156
+#, python-format
+msgid "Unexpected error: %s"
+msgstr ""
+
+#: nova/vnc/xvp_proxy.py:176
+#, python-format
+msgid "Starting nova-xvpvncproxy node (version %s)"
+msgstr ""
+
+#: nova/volume/cinder.py:94
+#, python-format
+msgid "Cinderclient connection created using URL: %s"
+msgstr ""
+
+#: nova/volume/cinder.py:219
+msgid "status must be 'in-use'"
+msgstr ""
+
+#: nova/volume/cinder.py:225
+msgid "status must be 'available'"
+msgstr ""
+
diff --git a/nova/locale/zh_CN/LC_MESSAGES/nova.po b/nova/locale/zh_CN/LC_MESSAGES/nova.po
index 2ef729c67..3e0a9b0e5 100644
--- a/nova/locale/zh_CN/LC_MESSAGES/nova.po
+++ b/nova/locale/zh_CN/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-05-07 06:51+0000\n"
"Last-Translator: Edward <Unknown>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
@@ -171,7 +171,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "å¯†é’¥å¯¹æ•°æ®æ— æ•ˆ"
@@ -1452,21 +1452,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr "è¿è¡Œcmd (SSH):%s"
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr "SSHä¸Šä¸æ”¯æŒçŽ¯å¢ƒå˜é‡"
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr "SSHä¸Šä¸æ”¯æŒçš„è¿›ç¨‹è¾“å…¥å‚æ•°ã€‚"
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr "è¿è¡Œç»“果为 %s"
@@ -1874,7 +1874,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r"
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, fuzzy, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr "存在多个固定IP,使用第一个:%s"
@@ -2058,33 +2058,33 @@ msgstr "无效的请求:%s"
msgid "Failed to get metadata for instance id: %s"
msgstr "为ip: %s获å–元数æ®å¤±è´¥"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr "抓到错误:%s"
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr "%(url)s éšHTTP %(status)d返回"
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr "必须明确一个ExtensionManager类"
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr "扩展资æºï¼š%s"
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr "扩展%(ext_name)sï¼šæ— æ³•æ‰©å±•èµ„æº %(collection)s:没有那ç§èµ„æº"
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr "扩展资æºçš„æ‰©å±• %(ext_name)s:%(collection)s"
@@ -2157,62 +2157,62 @@ msgstr "æ‹’ç»å¿«ç…§è¯·æ±‚ï¼Œå¿«ç…§å½“å‰æœªè¢«æ¿€æ´»"
msgid "Instance snapshots are not permitted at this time."
msgstr "该时刻实例快照是ä¸å…许的。"
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr "加载的扩展:%s"
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr "Ext name: %s"
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr "Ext alias: %s"
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr "Ext æè¿°: %s"
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr "Ext 命å空间: %s"
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr "Ext updated: %s"
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr "加载扩展å‘生异常:%s"
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr "正在加载扩展 %s"
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr "调用扩展工厂 %s"
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr "加载扩展 %(ext_factory)s 失败:%(exc)s"
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr "加载扩展 %(classpath)s 失败:%(exc)s"
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr "加载扩展 %(ext_name)s 失败:%(exc)s"
@@ -2263,7 +2263,7 @@ msgstr "没有该动作:%s"
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr "错误格å¼çš„请求主体"
@@ -2779,7 +2779,7 @@ msgstr "å±žæ€§ä¸æ”¯æŒ: %s"
msgid "Detach interface %s"
msgstr "正在开å¯VLANæŽ¥å£ %s"
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2889,31 +2889,28 @@ msgstr "网络ä¸åŒ…å«åŠ¨ä½œ %s"
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr "%s 必须是'MANUAL' 或者 'AUTO'。"
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-#, fuzzy
-msgid "Instance evacuate is admin only functionality"
-msgstr "Describe-resourceæ˜¯åªæœ‰ç®¡ç†å‘˜æ‰èƒ½æ‰§è¡Œçš„功能。"
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
#, fuzzy
msgid "host and onSharedStorage must be specified."
msgstr "host与block_migration必须确定"
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, fuzzy, python-format
msgid "Error in evacuate, %s"
msgstr "è¿ç§»é”™è¯¯ %s"
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, fuzzy, python-format
msgid "Fixed IP %s not found"
msgstr "è¯ä¹¦ %(certificate_id)s 没有找到。"
@@ -2962,57 +2959,62 @@ msgstr "没有更多的浮动ip。"
msgid "Floating ip %s has been disassociated"
msgstr "浮动ip %(address)s 没有被关è”。"
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr "ç¼ºå°‘å‚æ•° dict"
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr "åœ°å€æ²¡æœ‰æŒ‡å®š"
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
#, fuzzy
msgid "No nw_info cache associated with instance"
msgstr "没有固定ip与实例关è”"
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr "没有固定ip与实例关è”"
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+#, fuzzy
+msgid "Specified fixed address not assigned to instance"
+msgstr "没有固定ip与实例关è”"
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
#, fuzzy
msgid "floating ip is already associated"
msgstr "浮动ip %(address)s 已被关è”。"
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
#, fuzzy
msgid "floating ip not found"
msgstr "没有找到floating_ip"
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
#, fuzzy
msgid "Floating ip is not associated"
msgstr "浮动ip %(address)s 没有被关è”。"
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, fuzzy, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr "浮动ip %(address)s 没有被关è”。"
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3330,6 +3332,16 @@ msgstr "ä¸ºå· %s 创建快照"
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, fuzzy, python-format
+msgid "Reserving IP address %s"
+msgstr "é‡Šæ”¾åœ°å€ %s"
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, fuzzy, python-format
+msgid "Unreserving IP address %s"
+msgstr "é‡Šæ”¾åœ°å€ %s"
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3499,609 +3511,609 @@ msgstr "å…ƒç´ ä¸æ˜¯å­èŠ‚ç‚¹"
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
#, fuzzy
msgid "leasing ip"
msgstr "正在创建镜åƒ"
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
#, fuzzy
msgid "releasing ip"
msgstr "正在创建镜åƒ"
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
#, fuzzy
msgid "Reserved"
msgstr "已接收 %s"
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, fuzzy, python-format
msgid "error: %s"
msgstr "æ•°æ®åº“错误:%s"
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
#, fuzzy
msgid "network"
msgstr "é‡ç½®ç½‘络"
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
#, fuzzy
msgid "IP address"
msgstr "起始地å€"
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
#, fuzzy
msgid "No fixed IP found."
msgstr "找ä¸åˆ°å›ºå®šIP。"
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, fuzzy, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr "没有固定ip与实例关è”"
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
#, fuzzy
msgid "No floating IP addresses have been defined."
msgstr "浮动ip %(address)s 已被关è”。"
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr "id"
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr "IPv4"
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr "IPv6"
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr "起始地å€"
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr "DNS1"
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr "DNS2"
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr "VlanID"
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr "项目"
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr "uuid"
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
#, fuzzy
msgid "No networks found"
msgstr "没有找到网络"
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
#, fuzzy
msgid "UUID is required to delete Quantum Networks"
msgstr "创建网络 %(req)s 是必è¦çš„。"
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
#, fuzzy
msgid "instance"
msgstr "åœæ­¢å®žä¾‹ %r"
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr "æœåŠ¡ %(service_id)s 没有找到。"
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, fuzzy, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr "æœåŠ¡ %(service_id)s 没有找到。"
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
#, fuzzy
msgid "An unexpected error has occurred."
msgstr "æ„外错误:%s"
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
#, fuzzy
msgid "PROJECT"
msgstr "项目"
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
#, fuzzy
msgid "Must supply valid parameters to create instance_type"
msgstr "无法创建实例类型。"
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
#, fuzzy
msgid "Instance Type exists."
msgstr "实例 - %s ä¸å­˜åœ¨"
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
#, fuzzy
msgid "Unknown error"
msgstr "未知的guestmount错误"
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, fuzzy, python-format
msgid "%s created"
msgstr "表 |%s| 没有创建"
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
#, fuzzy
msgid "Valid instance type name is required"
msgstr "%s 是一个正确的实例åç§°"
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, fuzzy, python-format
msgid "DB Error: %s"
msgstr "æ•°æ®åº“错误:%s"
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, fuzzy, python-format
msgid "Hypervisor: %s"
msgstr "类型is = %s"
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
#, fuzzy
msgid "Cannot run any more instances of this type."
msgstr "超过实例的é…é¢ã€‚您无法è¿è¡Œæ›´å¤šæ­¤ç±»åž‹çš„实例。"
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, fuzzy, python-format
msgid "Can only run %s more instances of this type."
msgstr "超过实例的é…é¢ã€‚您åªèƒ½å†è¿è¡Œ %s 个此类型的实例。"
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, fuzzy, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个实例"
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图设置 %(num_metadata)s 个元数æ®å±žæ€§"
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
#, fuzzy
msgid "Metadata property key greater than 255 characters"
msgstr "安全组 %s ä¸èƒ½æ¯”255个字符更长。"
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
#, fuzzy
msgid "Metadata property value greater than 255 characters"
msgstr "安全组 %s ä¸èƒ½æ¯”255个字符更长。"
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "无法附加å·åˆ°å®žä¾‹ %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr "准备è¿è¡Œ %s 个实例"
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr "bdm %s"
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr "block_device_mapping %s"
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "准备开始终止实例"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, fuzzy, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr "实例类型 %(instance_type_id)s 没有找到。"
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
#, fuzzy
msgid "going to delete a resizing instance"
msgstr "准备开始终止实例"
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, fuzzy, python-format
msgid "instance's host %s is down, deleting from database"
msgstr "没有托管实例 %s,立刻删除"
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
#, fuzzy
msgid "Going to try to soft delete instance"
msgstr "准备å°è¯•软删除实例 %s"
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
#, fuzzy
msgid "Going to try to terminate instance"
msgstr "准备å°è¯•终止实例 %s"
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
#, fuzzy
msgid "Going to try to stop instance"
msgstr "准备å°è¯•åœæ­¢å®žä¾‹ %s"
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
#, fuzzy
msgid "Going to try to start instance"
msgstr "准备å°è¯•å¯åŠ¨å®žä¾‹ %s"
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr "æœç´¢æ¡ä»¶ï¼š %s"
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, fuzzy, python-format
msgid "snapshot for %s"
msgstr "开始为虚拟机 %s 快照"
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr "flavor_id为空。å‡å®šåœ¨è¿ç§»ã€‚"
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr "旧的实例类型 %(current_instance_type_name)s,新的实例类型 %(new_instance_type_name)s"
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, fuzzy, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个实例"
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, fuzzy, python-format
msgid "Going to try to live migrate instance to %s"
msgstr "准备å°è¯•终止实例 %s"
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr "密钥对å称长度必须在1到255个字符之间"
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr "安全组 %s æ—¢ä¸æ˜¯å­—ç¬¦ä¸²ä¹Ÿä¸æ˜¯unicode"
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr "安全组 %s ä¸èƒ½ä¸ºç©ºã€‚"
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, fuzzy, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr "傿•°GroupName的值 (%s) 无效。长度超过了上é™255。"
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr "安全组 %s ä¸èƒ½æ¯”255个字符更长。"
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr "创建安全组 %s"
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr "安全组 %s å·²ç»å­˜åœ¨"
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "无法销æ¯VBD %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
#, fuzzy
msgid "Security group is still in use"
msgstr "安全组id应该是整数"
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr "删除安全组 %s"
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr "没有找到规则 (%s)"
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
#, fuzzy
msgid "Quota exceeded, too many security group rules."
msgstr "添加安全组规则:%r"
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr "æŽˆæƒ %s å®‰å…¨ç»„å…¥å£æƒé™"
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr "撤销 %s å®‰å…¨ç»„å…¥å£æƒé™"
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr "安全组id应该是整数"
@@ -4160,35 +4172,35 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, fuzzy, python-format
msgid "'%s' argument must be a positive integer"
msgstr "åˆ›å»ºå‚æ•°å¿…须是正整数"
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
#, fuzzy
msgid "'rxtx_factor' argument must be a positive float"
msgstr "åˆ›å»ºå‚æ•°å¿…须是正整数"
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr "æ•°æ®åº“错误:%s"
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr "未找到è¦åˆ é™¤çš„实例类型 %s"
@@ -4427,7 +4439,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr "%s。把实例的 vm_state设置为ERROR"
@@ -4700,22 +4712,22 @@ msgstr "网络 %(network_id)s 没有找到。"
msgid "Host %(host)s not found"
msgstr "主机 %(host)s 没有找到。"
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr "预在线è¿ç§»åœ¨%(dest)s失败"
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
#, fuzzy
msgid "_post_live_migration() is started.."
msgstr "post_live_migration()å·²ç»å¯åŠ¨ã€‚"
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr "把实例è¿ç§»åˆ° %(dest)s æˆåŠŸå®Œæˆã€‚"
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
@@ -4723,166 +4735,166 @@ msgstr ""
"你会看到错误“libvirt: QEMU error: Domain not found: no domain with matching "
"name。â€è¿™ä¸ªé”™è¯¯å¯ä»¥æ”¾å¿ƒçš„忽略。"
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
#, fuzzy
msgid "Post operation of migration started"
msgstr "è¿ç§»åŽæ“作å¯åЍ"
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, fuzzy, python-format
msgid "Failed to get compute_info for %s"
msgstr "为ip: %s获å–元数æ®å¤±è´¥"
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr "å‘现 %(migration_count)d 个超过 %(confirm_window)d 秒未ç»ç¡®è®¤çš„è¿ç§»"
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, fuzzy, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr "为实例 %(instance_uuid)s 关闭虚拟机"
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, fuzzy, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr "没有找到实例 %(instance_id)s"
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
#, fuzzy
msgid "In ERROR state"
msgstr "节点处于未知的错误状æ€ã€‚"
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr "更新带宽使用缓存"
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
#, fuzzy
msgid "Updating volume usage cache"
msgstr "更新带宽使用缓存"
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr "更新主机状æ€"
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr "在数æ®åº“中找到 %(num_db_instances)s个实例,在虚拟机管ç†ç¨‹åºæ‰¾åˆ° %(num_vm_instances)s 个实例。"
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
#, fuzzy
msgid "Instance is not (soft-)deleted."
msgstr "实例未å¯åЍ"
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
#, fuzzy
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr "FLAGS.reclaim_instance_interval <= 0,跳过..."
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr "回收删除的实例"
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, fuzzy, python-format
msgid "Deleting orphan compute node %s"
msgstr "LoggingVolumeDriver: %s"
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, fuzzy, python-format
msgid "No service record for host %s"
msgstr "计算节点 %s 没有æœåŠ¡"
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, fuzzy, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr "检测标签å为 '%(name_label)s' 的实例,这些实例被标识为DELETEDå´ä»ç„¶å­˜åœ¨äºŽä¸»æœºä¸Šã€‚"
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, fuzzy, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr "é”€æ¯æ ‡ç­¾å为 '%(name_label)s' 的实例,这些实例被标识为DELETEDå´ä»ç„¶å­˜åœ¨äºŽä¸»æœºä¸Šã€‚"
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, fuzzy, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr "无法识别的FLAGS.running_deleted_instance_actionçš„å–值 '%(action)s'"
@@ -5108,16 +5120,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr "釿–°å¯åŠ¨å®žä¾‹å¤±è´¥"
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr "无法识别的 read_deleted å–值â€%s“"
@@ -5129,17 +5141,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, fuzzy, python-format
msgid "Invalid instance id %s in request"
msgstr "实例 %s:已救æ´"
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5156,34 +5168,60 @@ msgstr "version应该是整数"
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
#, fuzzy
msgid "volume_usage_cache table not dropped"
@@ -5322,31 +5360,31 @@ msgstr "%s çš„é…é¢è¶…出,å°è¯•分é…地å€"
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, fuzzy, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr "没有为实例 %(instance_id)s 找到å·ã€‚"
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr "固定IPåœ°å€ %(address)s 已在使用。"
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, fuzzy, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr "为实例 %(instance_uuid)s 关闭虚拟机"
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, fuzzy, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr "固定IPåœ°å€ %(address)s 已在使用。"
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5354,12 +5392,12 @@ msgid ""
"ignored."
msgstr "æ•°æ®åº“ä¸ä¸€è‡´ï¼šDNS域|%s| 在Novaæ•°æ®åº“中注册,但是对浮动或者实例DNS驱动å‡ä¸å¯è§ã€‚将被忽略。"
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr "域 |%(domain)s| å·²ç»å­˜åœ¨ï¼ŒæŠŠåŒºåŸŸæ”¹å˜ä¸º |%(av_zone)s|。"
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr "域 |%(domain)s| å·²ç»å­˜åœ¨ï¼ŒæŠŠé¡¹ç›®æ”¹å˜ä¸º |%(project)s|。"
@@ -5494,22 +5532,22 @@ msgstr "解除 %s 过期固定ip的关è”"
msgid "setting network host"
msgstr "设置网络主机"
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
#, fuzzy
msgid "network allocations"
msgstr "实例 %s 的网络分é…"
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, fuzzy, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr "为实例 |%(instance_id)s| 获å–的网络:|%(networks)s|"
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
#, fuzzy
msgid "network deallocation for instance"
msgstr "为实例 |%s| 解除网络分é…"
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, fuzzy, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5519,99 +5557,99 @@ msgstr ""
"instance-dns-zone是 |%(domain)s|,该域ä½äºŽåŒºåŸŸ |%(zone)s| 中。实例|%(instance)s| 在区域 "
"|%(zone2)s| 里。没有DNS记录将创建。"
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, fuzzy, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr "%s çš„é…é¢è¶…出,å°è¯•分é…地å€"
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
#, fuzzy
msgid "Failed to update usages deallocating fixed IP"
msgstr "在数æ®åº“æ›´æ–°å·å¤±è´¥"
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr "租用的IP |%(address)s|"
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr "没有关è”çš„IP %s 被租用了"
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr "没有分é…çš„IP |%s| 被租用了"
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr "释放的IP |%(address)s|"
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr "没有关è”çš„IP %s 被释放了"
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr "没有租用的IP %s 被释放了"
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, fuzzy, python-format
msgid "%s must be an integer"
msgstr "offset 傿•°å¿…须是整数"
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr "cidr å·²ç»åœ¨ä½¿ç”¨"
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr "请求的cidr (%(cidr)s) 与已存在的超网络 (%(super)s) 冲çª"
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr "请求的cidr (%(cidr)s) 与已存在的较å°çš„cidr (%(smaller)s) 冲çª"
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr "网络已ç»å­˜åœ¨ã€‚"
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr "网路在删除å‰å¿…须与项目 %s 解除关è”"
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr "网络数é‡ä¸ŽVLAN起始数之和ä¸èƒ½å¤§äºŽ4049"
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, fuzzy, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5683,44 +5721,44 @@ msgstr "没有找到主机"
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, fuzzy, python-format
msgid "deallocate_for_instance() for %s"
msgstr "为实例 |%s| 解除网络分é…"
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, fuzzy, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr "在数æ®åº“删除å·å¤±è´¥"
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, fuzzy, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr "在数æ®åº“删除å·å¤±è´¥"
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, fuzzy, python-format
msgid "get_instance_nw_info() for %s"
msgstr "实例的network_info:|%s|"
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, fuzzy, python-format
msgid "validate_networks() for %s"
msgstr "错误的网络格å¼"
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, fuzzy, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr "找ä¸åˆ°é€‚åˆid %(id)s 的浮动IP。"
@@ -5913,17 +5951,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr "注入文件失败:%(resp)r"
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr "å‘现未知的 utils.execute 关键字傿•°ï¼š%r"
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr "正在è¿è¡Œcmd (subprocess):%s"
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr "%r 失败,é‡è¯•。"
@@ -6857,18 +6895,18 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
#, fuzzy
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr "%(pid)s å·²ç»è¶…过é…é¢ï¼Œè¯•图è¿è¡Œ %(min_count)s 个实例"
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6903,17 +6941,17 @@ msgstr "å¼ºåˆ¶æ€æ­»å®žä¾‹åŽï¼š%s"
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
#, fuzzy
msgid "spawn error"
msgstr "未知的guestmount错误"
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr "åœ°å€ |%(address)s| 没有分é…"
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6923,22 +6961,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, fuzzy, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr "åœ°å€ |%(address)s| 没有分é…"
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7834,7 +7872,7 @@ msgstr "实例代ç†ç‰ˆæœ¬ï¼š%s"
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr "正在更新主机状æ€"
@@ -7935,12 +7973,12 @@ msgstr "å¿«ç…§ä¸å…许循环。"
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, fuzzy, python-format
msgid "VM not found: %s"
msgstr "æ¡ç›®æ²¡æœ‰æ‰¾åˆ°"
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, fuzzy, python-format
msgid "Duplicate VM name found: %s"
msgstr "Quantum实体没有找到:%s"
@@ -7995,65 +8033,72 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
#, fuzzy
msgid "migrate_disk_and_power_off called"
msgstr "实例 %s:开始执行 migrate_disk_and_power_off"
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
#, fuzzy
msgid "finish_revert_migration called"
msgstr "实例 %s:开始执行 finish_revert_migration"
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "找ä¸åˆ°é€‚åˆid %(id)s 的浮动IP。"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
#, fuzzy
msgid "finish_migration called"
msgstr "实例 %s:开始执行 finish_migration"
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, fuzzy, python-format
msgid "Cannot find boot VHD file: %s"
msgstr "未知的基文件:%s"
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -8193,12 +8238,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "为实例 |%s| åˆ†é…æµ®åЍIP"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, fuzzy, python-format
msgid "Creating config drive at %(path)s"
msgstr "注入文件路径:'%s'"
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, fuzzy, python-format
msgid "Creating config drive failed with error: %s"
msgstr "注入文件路径:'%s'"
@@ -8263,59 +8308,59 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, fuzzy, python-format
msgid "Cannot get VM summary data for: %s"
msgstr "为ip: %s获å–元数æ®å¤±è´¥"
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, fuzzy, python-format
msgid "Creating VM %s"
msgstr "正在删除volumeID:%s "
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, fuzzy, python-format
msgid "Setting memory for vm %s"
msgstr "找ä¸åˆ°é€‚åˆid %(id)s 的浮动IP。"
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
#, fuzzy
msgid "Controller not found"
msgstr "没有找到æœåС噍"
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8364,7 +8409,7 @@ msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "正在创建虚拟机实例快照 %s "
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr "无法确定iscsi initiatoråå­—"
@@ -8398,247 +8443,247 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr "无法为VDI %s 找到VBD"
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr "正在连接 libvirt:%s"
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, fuzzy, python-format
msgid "URI %s does not support events"
msgstr "å·ç»„ %s ä¸å­˜åœ¨"
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr "连接 libvirt 失败"
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "正在连接 libvirt:%s"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr "é”€æ¯æ—¶å‘生错误。Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
#, fuzzy
msgid "During wait destroy, instance disappeared."
msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ã€‚"
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr "å®žä¾‹é”€æ¯æˆåŠŸã€‚"
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
#, fuzzy
msgid "Going to destroy instance again."
msgstr "å‡†å¤‡åœæ­¢å®žä¾‹"
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr "在 undefine æ—¶ libvirt å‘生错误。Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, fuzzy, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr "在 undefine æ—¶ libvirt å‘生错误。Code=%(errcode)s Error=%(e)s"
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr "删除实例文件 %(target)s"
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, fuzzy, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr "schedule_%(method)s 失败:%(ex)s"
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
#, fuzzy
msgid "Could not determine fibre channel world wide node names"
msgstr "无法确定iscsi initiatoråå­—"
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
#, fuzzy
msgid "Could not determine fibre channel world wide port names"
msgstr "无法确定iscsi initiatoråå­—"
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
#, fuzzy
msgid "During detach_volume, instance disappeared."
msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ã€‚"
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
#, fuzzy
msgid "attaching network adapter failed."
msgstr "没有网络定义。"
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
#, fuzzy
msgid "During detach_interface, instance disappeared."
msgstr "%s 在è¿è¡Œä¸­æ¶ˆå¤±äº†ã€‚"
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
#, fuzzy
msgid "detaching network adapter failed."
msgstr "没有网络定义。"
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
#, fuzzy
msgid "Instance soft rebooted successfully."
msgstr "实例æˆåŠŸé‡å¯ã€‚"
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
#, fuzzy
msgid "Failed to soft reboot instance."
msgstr "釿–°å¯åŠ¨å®žä¾‹å¤±è´¥"
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
#, fuzzy
msgid "Instance shutdown successfully."
msgstr "实例æˆåŠŸç”Ÿäº§ã€‚"
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr "实例æˆåŠŸé‡å¯ã€‚"
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr "实例在è¿è¡Œ"
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr "实例æˆåŠŸç”Ÿäº§ã€‚"
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr "data:%(data)r, fpath: %(fpath)r"
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "用户没有管ç†å‘˜æƒé™"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr "正在创建镜åƒ"
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, fuzzy, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr "å°† %(injection)s æ³¨å…¥åˆ°é•œåƒ %(img_id)s"
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, fuzzy, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr "忽略å‘é•œåƒ %(img_id)s 注入的数æ®çš„错误 (%(e)s)"
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8646,50 +8691,74 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr "查找 %(instance_name)sæ—¶libvirt出错:[é”™è¯¯ä»£ç  %(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
#, fuzzy
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr "无法得到CPUçš„æ•°ç›®ï¼Œå› ä¸ºè¿™ä¸ªå‡½æ•°ä¸æ˜¯ç»™è¿™ä¸ªå¹³å°æ‰§è¡Œçš„。这个错误å¯ä»¥è¢«æ”¾å¿ƒå¿½ç•¥ã€‚"
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr "libvirt版本过旧(䏿”¯æŒgetVersion)"
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "正在获å–é•œåƒ %s 的大å°"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8697,37 +8766,37 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, fuzzy, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr "创建tmpfile %s æ¥é€šçŸ¥å…¶ä»–çš„è®¡ç®—èŠ‚ç‚¹éœ€è¦æŒ‚载相åŒçš„存储。"
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr "å—存储è¿ç§»æ— æ³•在共享存储使用"
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
#, fuzzy
msgid "Live migration can not be used without shared storage."
msgstr "å—存储è¿ç§»æ— æ³•在共享存储使用"
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, fuzzy, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
@@ -8736,7 +8805,7 @@ msgstr ""
"无法è¿ç§»%(instance_id)s 到 %(dest)s 上:缺少ç£ç›˜(主机:%(available)s <= "
"实例:%(necessary)s)"
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
@@ -8745,7 +8814,7 @@ msgstr ""
"å·²å¯åŠ¨å®žä¾‹çš„CPUä¿¡æ¯ï¼š\n"
"%s"
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8760,71 +8829,71 @@ msgstr ""
"\n"
"å‚考 %(u)s"
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr "创建tmpfile %s æ¥é€šçŸ¥å…¶ä»–çš„è®¡ç®—èŠ‚ç‚¹éœ€è¦æŒ‚载相åŒçš„存储。"
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, fuzzy, python-format
msgid "Live Migration failure: %(e)s"
msgstr "预在线è¿ç§»åœ¨%(dest)s失败"
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, fuzzy, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr "plug_vifs() 失败%(cnt)d æ¬¡ã€‚æœ€å¤šé‡æ–°å°è¯• %(max_retry)d 次在主机 %(hostname)s。"
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, fuzzy, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr "查找 %(instance_name)sæ—¶libvirt出错:[é”™è¯¯ä»£ç  %(error_code)s] %(ex)s"
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr "因它åƒå·ï¼Œæ‰€ä»¥è·³è¿‡ %(path)s"
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
#, fuzzy
msgid "Starting migrate_disk_and_power_off"
msgstr "实例 %s:开始执行 migrate_disk_and_power_off"
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
#, fuzzy
msgid "Instance running successfully."
msgstr "实例 %s æˆåŠŸè¿è¡Œã€‚"
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
#, fuzzy
msgid "Starting finish_migration"
msgstr "实例 %s:开始执行 finish_migration"
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
#, fuzzy
msgid "Starting finish_revert_migration"
msgstr "实例 %s:开始执行 finish_revert_migration"
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, fuzzy, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr "删除实例文件 %(target)s"
@@ -8857,11 +8926,11 @@ msgstr "å称为 %(name)s çš„nwfilter(%(instance_filter_name)s) 未找到。"
msgid "iptables firewall: Setup Basic Filtering"
msgstr "iptables 防ç«å¢™ï¼šè®¾ç½®åŸºæœ¬çš„过滤规则"
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, fuzzy, python-format
msgid "Unknown image_type=%s"
msgstr "未知的ç£ç›˜é•œåƒå¥æŸ„:%s"
@@ -9206,106 +9275,106 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "无法找到 %s å·"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, fuzzy, python-format
msgid "Fetching image '%s' from glance"
msgstr "正在从glanceé•œåƒæœåŠ¡å™¨ä¸­ä¸‹è½½é•œåƒ %s"
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, fuzzy, python-format
msgid "Using image found at '%s'"
msgstr "正在删除基文件:%s"
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, fuzzy, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr "ä¸Šä¼ é•œåƒ %s"
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "在volume_utils创建存储库"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, fuzzy, python-format
msgid "Copying image to the device '%s'"
msgstr "正在获å–é•œåƒ %s 的大å°"
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
#, fuzzy
msgid "Snapshot added to glance."
msgstr "过滤器添加给实例 %s"
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "无法使用全局角色 %(role_id)s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
#, fuzzy
msgid "Connection error connecting PowerVM manager"
msgstr "glanceæœåŠ¡å™¨è¿žæŽ¥é”™è¯¯ï¼Œé‡è¯•中"
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, fuzzy, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr "正在è¿è¡Œcmd (subprocess):%s"
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "连接到melange失败"
@@ -9522,29 +9591,29 @@ msgstr "%(text)s: _db_content => %(content)s"
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr "属性 %(attr)s 没有为管ç†å¯¹è±¡ %(objName)s 设置"
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr "没有虚拟机注册"
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr "ref 为 %s 的虚拟机ä¸å­˜åœ¨"
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr "é€€å‡ºæ— æ•ˆçš„ä¼šè¯æˆ–者已ç»é€€å‡ºäº†ï¼š%s"
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr "ä¼šè¯æœ‰é”™è¯¯"
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr "ä¼šè¯æ— æ•ˆ"
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
#, fuzzy
msgid "No Virtual Machine has been registered yet"
msgstr " 还没有虚拟机被注册"
@@ -10103,12 +10172,12 @@ msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
msgid "Unable to find iSCSI Target"
msgstr "æ— æ³•æ‰¾åˆ°åœ°å€ %r"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "挂载点 %(mountpoint)s 附加到实例 %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "分离_volume: %(instance_name)s, %(mountpoint)s"
@@ -10118,24 +10187,24 @@ msgstr "分离_volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "没有在数æ®åº“找到å·"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "挂载点 %(mountpoint)s 从实例 %(instance_name)s 分离"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, fuzzy, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr "超时:调用 %(method)s 超时。虚拟机id=%(instance_uuid)s; args=%(args)r"
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, fuzzy, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr "没有执行:代ç†ä¸æ”¯æŒ %(method)s 的调用。虚拟机id=%(instance_uuid)s; args=%(args)r"
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, fuzzy, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr "对 %(method)s 的调用返回错误:%(e)s。"
@@ -10249,19 +10318,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr "解密ç§é’¥å¤±è´¥ï¼š%s"
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr "䏿”¯æŒåœ¨XenServerå¯åŠ¨ä¸»æœº"
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr "无法登录到XenAPI(Dom0ç£ç›˜æ˜¯ç©ºä¹ˆï¼Ÿ)"
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr "得到异常:%s"
@@ -10546,236 +10615,236 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr "请求 xapi èŽ·å– vhd é•œåƒ %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr "image_size_bytes=%(size_bytes)d,allowed_size_bytes=%(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr "镜åƒå¤§å° %(size_bytes)d 超过instance_type所å…许的å°å¤§ %(allowed_size_bytes)d"
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, fuzzy, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr "获å–é•œåƒ %(image)s"
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, fuzzy, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr "é•œåƒ %(image)s 的大å°ï¼š%(virtual_size)d"
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr "内核/内存盘镜åƒå¤ªå¤§ï¼š%(vdi_size)d 字节,最大 %(max_size)d 字节"
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr "å°†VDI %s å¤åˆ¶åˆ°dom0çš„/boot/guest下"
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr "内核/内存盘 VDI %s 已销æ¯"
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
#, fuzzy
msgid "Failed to fetch glance image"
msgstr "实例 %s:获å–Glance镜åƒå¤±è´¥"
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr "检测到 %(image_type_str)s æ ¼å¼ï¼Œç›®æ ‡æ˜¯é•œåƒ %(image_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr "为PV内核查询vdi %s"
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr "æœªçŸ¥çš„é•œåƒæ ¼å¼ %(disk_image_type)s"
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr "VDI %s ä¾ç„¶å¯ç”¨"
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr "釿–°æ‰«æå­˜å‚¨åº“ %s"
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr "标记sr_matching_filter '%s' 没有éµå¾ªæ ¼å¼è¦æ±‚"
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr "XenAPI无法找到安装客户实例的存储库。请检查你的é…置或者é…置标记'sr_matching_filter'"
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr "无法找到content-type ISO的存储库"
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr "ISO:正在查看存储库 %(sr_rec)s"
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr "ISO:éžiso内容"
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr "ISO:iso content_type,没有 'i18n-key' 键"
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr "ISO:iso content_type,i18n-keyçš„å€¼ä¸æ˜¯ 'local-storage-iso'"
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr "ISO: å­˜å‚¨åº“ç¬¦åˆæ ‡å‡†"
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr "ISO: ISO, æ­£åœ¨æŸ¥çœ‹æ˜¯å¦æ˜¯æœ¬åœ°çš„主机"
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr "ISO: PBD %(pbd_ref)s 消失了"
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr "ISO: PBD匹é…, æƒ³è¦ %(pbd_rec)s, ç›®å‰æœ‰ %(host)s"
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr "ISOï¼šå«æœ‰æœ¬åœ°PBD的存储库"
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr "æ— æ³•ä¸ºå«æœåŠ¡å™¨è¯¦ç»†ä¿¡æ¯çš„虚拟机 %(vm_uuid)s 获å–RRD XML:%(server)s。"
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr "无法获å–åŒ…å«æœåŠ¡å™¨è¯¦ç»†æƒ…å†µçš„RRD XML更新:%(server)s。"
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr "æ¥è‡ªXenserver无效的统计数æ®ï¼š%s"
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, fuzzy, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr "VHD %(vdi_uuid)s 有父 %(parent_ref)s"
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr "父标识 %(parent_uuid)s 和原先的父标识 %(original_parent_uuid)s ä¸åŒ¹é…,正在等待åˆå¹¶..."
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr "VHD coalesce å°†è¦è¶…过(%(max_attempts)d),放弃中..."
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr "等待设备 %s 创建超时"
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr "æ’å…¥VBD %s... "
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr "æ’å…¥VBD %s 完æˆã€‚"
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr "VBD %(vbd_ref)s 作为 %(orig_dev)s æ’å…¥"
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr "VBD %(vbd_ref)s æ’å…¥é”™è¯¯çš„è®¾å¤‡ï¼Œé‡æ–°æ˜ å°„为 %(dev)s"
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr "正在销æ¯VDI为 %s çš„ VBD "
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr "å·²ç»é”€æ¯VDI为 %s çš„ VBD"
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr "对 %s è¿è¡Œpygrub"
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr "找到Xen内核 %s"
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr "没有找到Xen内核。正在å¯åЍHVM。"
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10783,51 +10852,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr "分区:"
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr " %(num)s: %(ptype)s %(size)d sectors"
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr "将分区表 %(primary_first)d %(primary_last)d 写入到 %(dev_path)s..."
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr "完æˆå†™å…¥åˆ†åŒºè¡¨ %s 。"
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr "直接æ“ä½œæŽ¥å£æ–‡ä»¶"
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr "挂载文件系统失败(期望的是éžLinux实例):%s"
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -11023,27 +11092,31 @@ msgstr "正在为虚拟机 %(vm_ref)s,网络 %(network_ref)s 创建VIF。"
msgid "Injecting hostname to xenstore"
msgstr "为虚拟机注入hostname到xs:|%s|"
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
#, fuzzy
msgid "No suitable network for migrate"
msgstr "错误的网络格å¼"
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
#, fuzzy
msgid "Migrate Send failed"
msgstr "创建失败"
@@ -11116,7 +11189,12 @@ msgstr "æ— æ³•èŽ·å¾—ç›®æ ‡ä¿¡æ¯ %(data)s, %(mountpoint)s"
msgid "Unable to obtain target information %(connection_data)s"
msgstr "æ— æ³•èŽ·å¾—ç›®æ ‡ä¿¡æ¯ %(data)s, %(mountpoint)s"
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, fuzzy, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr "实例 %(instance_id)s 没有找到。"
@@ -11184,70 +11262,3 @@ msgstr "状æ€å¿…é¡»å¯ç”¨"
msgid "status must be 'available'"
msgstr "状æ€å¿…é¡»å¯ç”¨"
-#~ msgid "Unexpected error while running command."
-#~ msgstr "è¿è¡Œå‘½ä»¤æ—¶å‡ºçްæ„外错误"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "命令:%(cmd)s\n"
-#~ "退出代ç ï¼š%(exit_code)s\n"
-#~ "标准输出:%(stdout)r\n"
-#~ "标准错误输出:%(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr "å¯åЍxvpå‘生错误:%s"
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr "移除实例â€%s“的虚拟网络设备时失败"
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr "移除实例â€%s“的虚拟网络设备时失败"
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr "移除实例â€%s“的虚拟网络设备时失败"
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr "移除实例â€%s“的虚拟网络设备时失败"
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr "移除实例â€%s“的虚拟网络设备时失败"
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr "网络 %(network_id)s 没有找到。"
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr "必须指定 vmwareapi_wsdl_loc"
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr "无法为主机得到存储库:%s"
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/locale/zh_TW/LC_MESSAGES/nova.po b/nova/locale/zh_TW/LC_MESSAGES/nova.po
index 65fce59f6..9caf4c16a 100644
--- a/nova/locale/zh_TW/LC_MESSAGES/nova.po
+++ b/nova/locale/zh_TW/LC_MESSAGES/nova.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: nova\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
-"POT-Creation-Date: 2013-05-06 19:37+0000\n"
+"POT-Creation-Date: 2013-05-13 19:38+0000\n"
"PO-Revision-Date: 2012-03-07 02:00+0000\n"
"Last-Translator: Charles Hsu <charles0126+openstack@gmail.com>\n"
"Language-Team: Chinese (Traditional) <zh_TW@li.org>\n"
@@ -168,7 +168,7 @@ msgid ""
msgstr ""
#: nova/exception.py:235 nova/api/ec2/cloud.py:463
-#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2769
+#: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2765
msgid "Keypair data is invalid"
msgstr "無效的Keypair"
@@ -1433,21 +1433,21 @@ msgstr ""
msgid "Expected to receive %(exp)s bytes, but actually %(act)s"
msgstr ""
-#: nova/utils.py:187
+#: nova/utils.py:187 nova/openstack/common/processutils.py:219
#, python-format
msgid "Running cmd (SSH): %s"
msgstr ""
-#: nova/utils.py:189
+#: nova/utils.py:189 nova/openstack/common/processutils.py:221
msgid "Environment not supported over SSH"
msgstr ""
-#: nova/utils.py:193
+#: nova/utils.py:193 nova/openstack/common/processutils.py:225
msgid "process_input not supported over SSH"
msgstr ""
-#: nova/utils.py:212 nova/openstack/common/processutils.py:162
-#: nova/virt/powervm/common.py:90
+#: nova/utils.py:212 nova/openstack/common/processutils.py:167
+#: nova/openstack/common/processutils.py:240 nova/virt/powervm/common.py:118
#, python-format
msgid "Result was %s"
msgstr ""
@@ -1848,7 +1848,7 @@ msgid "Unable to associate IP Address, no fixed_ips."
msgstr ""
#: nova/api/ec2/cloud.py:1265
-#: nova/api/openstack/compute/contrib/floating_ips.py:238
+#: nova/api/openstack/compute/contrib/floating_ips.py:248
#, python-format
msgid "multiple fixed_ips exist, using the first: %s"
msgstr ""
@@ -2023,33 +2023,33 @@ msgstr ""
msgid "Failed to get metadata for instance id: %s"
msgstr "無法掛載Volume 到虛擬機器 %s"
-#: nova/api/openstack/__init__.py:51
+#: nova/api/openstack/__init__.py:53
#, python-format
msgid "Caught error: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:60
+#: nova/api/openstack/__init__.py:62
#, python-format
msgid "%(url)s returned with HTTP %(status)d"
msgstr ""
-#: nova/api/openstack/__init__.py:135
+#: nova/api/openstack/__init__.py:137
msgid "Must specify an ExtensionManager class"
msgstr ""
-#: nova/api/openstack/__init__.py:146
+#: nova/api/openstack/__init__.py:148 nova/api/openstack/__init__.py:252
#, python-format
msgid "Extended resource: %s"
msgstr ""
-#: nova/api/openstack/__init__.py:180
+#: nova/api/openstack/__init__.py:182 nova/api/openstack/__init__.py:292
#, python-format
msgid ""
"Extension %(ext_name)s: Cannot extend resource %(collection)s: No such "
"resource"
msgstr ""
-#: nova/api/openstack/__init__.py:185
+#: nova/api/openstack/__init__.py:187 nova/api/openstack/__init__.py:297
#, python-format
msgid "Extension %(ext_name)s extending resource: %(collection)s"
msgstr ""
@@ -2121,62 +2121,62 @@ msgstr ""
msgid "Instance snapshots are not permitted at this time."
msgstr ""
-#: nova/api/openstack/extensions.py:195
+#: nova/api/openstack/extensions.py:196
#, python-format
msgid "Loaded extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:234
+#: nova/api/openstack/extensions.py:235
#, python-format
msgid "Ext name: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:235
+#: nova/api/openstack/extensions.py:236
#, python-format
msgid "Ext alias: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:236
+#: nova/api/openstack/extensions.py:237
#, python-format
msgid "Ext description: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:238
+#: nova/api/openstack/extensions.py:239
#, python-format
msgid "Ext namespace: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:239
+#: nova/api/openstack/extensions.py:240
#, python-format
msgid "Ext updated: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:241
+#: nova/api/openstack/extensions.py:242
#, python-format
msgid "Exception loading extension: %s"
msgstr ""
-#: nova/api/openstack/extensions.py:255
+#: nova/api/openstack/extensions.py:256
#, python-format
msgid "Loading extension %s"
msgstr ""
-#: nova/api/openstack/extensions.py:264
+#: nova/api/openstack/extensions.py:265
#, python-format
msgid "Calling extension factory %s"
msgstr ""
-#: nova/api/openstack/extensions.py:276
+#: nova/api/openstack/extensions.py:277
#, python-format
msgid "Failed to load extension %(ext_factory)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:345
+#: nova/api/openstack/extensions.py:346
#, python-format
msgid "Failed to load extension %(classpath)s: %(exc)s"
msgstr ""
-#: nova/api/openstack/extensions.py:369
+#: nova/api/openstack/extensions.py:370
#, python-format
msgid "Failed to load extension %(ext_name)s: %(exc)s"
msgstr ""
@@ -2227,7 +2227,7 @@ msgstr ""
#: nova/api/openstack/compute/server_metadata.py:101
#: nova/api/openstack/compute/server_metadata.py:126
#: nova/api/openstack/compute/contrib/admin_actions.py:211
-#: nova/api/openstack/compute/contrib/evacuate.py:49
+#: nova/api/openstack/compute/contrib/evacuate.py:46
msgid "Malformed request body"
msgstr ""
@@ -2729,7 +2729,7 @@ msgstr ""
msgid "Detach interface %s"
msgstr ""
-#: nova/api/openstack/compute/contrib/baremetal_nodes.py:193
+#: nova/api/openstack/compute/contrib/baremetal_nodes.py:192
msgid "Must specify id or address"
msgstr ""
@@ -2835,29 +2835,27 @@ msgstr ""
msgid "%s must be either 'MANUAL' or 'AUTO'."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:43
-msgid "Instance evacuate is admin only functionality"
-msgstr ""
-
-#: nova/api/openstack/compute/contrib/evacuate.py:61
+#: nova/api/openstack/compute/contrib/evacuate.py:58
msgid "admin password can't be changed on existing disk"
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:69
+#: nova/api/openstack/compute/contrib/evacuate.py:66
msgid "host and onSharedStorage must be specified."
msgstr ""
-#: nova/api/openstack/compute/contrib/evacuate.py:80
+#: nova/api/openstack/compute/contrib/evacuate.py:77
#, python-format
msgid "Error in evacuate, %s"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:39
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:41
#, python-format
msgid "Fixed IP %s has been deleted"
msgstr ""
#: nova/api/openstack/compute/contrib/fixed_ips.py:71
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:75
#, python-format
msgid "Fixed IP %s not found"
msgstr ""
@@ -2903,53 +2901,57 @@ msgstr ""
msgid "Floating ip %s has been disassociated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:215
-#: nova/api/openstack/compute/contrib/floating_ips.py:271
+#: nova/api/openstack/compute/contrib/floating_ips.py:216
+#: nova/api/openstack/compute/contrib/floating_ips.py:281
#: nova/api/openstack/compute/contrib/security_groups.py:413
msgid "Missing parameter dict"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:218
-#: nova/api/openstack/compute/contrib/floating_ips.py:274
+#: nova/api/openstack/compute/contrib/floating_ips.py:219
+#: nova/api/openstack/compute/contrib/floating_ips.py:284
msgid "Address not specified"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:225
+#: nova/api/openstack/compute/contrib/floating_ips.py:226
msgid "No nw_info cache associated with instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:230
+#: nova/api/openstack/compute/contrib/floating_ips.py:231
msgid "No fixed ips associated to instance"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:246
+#: nova/api/openstack/compute/contrib/floating_ips.py:242
+msgid "Specified fixed address not assigned to instance"
+msgstr ""
+
+#: nova/api/openstack/compute/contrib/floating_ips.py:256
msgid "floating ip is already associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:249
+#: nova/api/openstack/compute/contrib/floating_ips.py:259
msgid "l3driver call to add floating ip failed"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:253
-#: nova/api/openstack/compute/contrib/floating_ips.py:282
+#: nova/api/openstack/compute/contrib/floating_ips.py:263
+#: nova/api/openstack/compute/contrib/floating_ips.py:292
msgid "floating ip not found"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:256
+#: nova/api/openstack/compute/contrib/floating_ips.py:266
msgid "Error. Unable to associate floating ip"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:297
+#: nova/api/openstack/compute/contrib/floating_ips.py:307
msgid "Floating ip is not associated"
msgstr ""
-#: nova/api/openstack/compute/contrib/floating_ips.py:301
+#: nova/api/openstack/compute/contrib/floating_ips.py:311
#, python-format
msgid "Floating ip %(address)s is not associated with instance %(id)s."
msgstr ""
#: nova/api/openstack/compute/contrib/floating_ips_bulk.py:146
-#: nova/cmd/manage.py:381
+#: nova/cmd/manage.py:378
#, python-format
msgid "/%s should be specified as single address(es) not in cidr format"
msgstr ""
@@ -3255,6 +3257,16 @@ msgstr ""
msgid "Invalid value '%s' for force."
msgstr ""
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:60
+#, python-format
+msgid "Reserving IP address %s"
+msgstr ""
+
+#: nova/api/openstack/compute/plugins/v3/fixed_ips.py:63
+#, python-format
+msgid "Unreserving IP address %s"
+msgstr ""
+
#: nova/api/openstack/compute/views/servers.py:186
msgid "Instance has had its instance_type removed from the DB"
msgstr ""
@@ -3423,583 +3435,583 @@ msgstr ""
msgid "deployment to node %s done"
msgstr ""
-#: nova/cmd/baremetal_manage.py:160 nova/cmd/manage.py:1245
+#: nova/cmd/baremetal_manage.py:157 nova/cmd/manage.py:1242
#, python-format
msgid "Could not read %s. Re-running with sudo"
msgstr ""
-#: nova/cmd/baremetal_manage.py:164 nova/cmd/manage.py:1249
+#: nova/cmd/baremetal_manage.py:161 nova/cmd/manage.py:1246
msgid "sudo failed, continuing as if nothing happened"
msgstr ""
-#: nova/cmd/baremetal_manage.py:166 nova/cmd/manage.py:1251
+#: nova/cmd/baremetal_manage.py:163 nova/cmd/manage.py:1248
msgid "Please re-run nova-manage as root."
msgstr ""
-#: nova/cmd/baremetal_manage.py:206 nova/cmd/manage.py:1296
+#: nova/cmd/baremetal_manage.py:203 nova/cmd/manage.py:1293
msgid "Command failed, please check log for more info"
msgstr ""
-#: nova/cmd/dhcpbridge.py:50
+#: nova/cmd/dhcpbridge.py:47
msgid "leasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:70
+#: nova/cmd/dhcpbridge.py:67
msgid "releasing ip"
msgstr ""
-#: nova/cmd/dhcpbridge.py:125
+#: nova/cmd/dhcpbridge.py:122
#, python-format
msgid "Called '%(action)s' for mac '%(mac)s' with ip '%(ip)s'"
msgstr ""
-#: nova/cmd/dhcpbridge.py:135
+#: nova/cmd/dhcpbridge.py:132
msgid "Environment variable 'NETWORK_ID' must be set."
msgstr ""
-#: nova/cmd/manage.py:206
+#: nova/cmd/manage.py:203
msgid ""
"The above error may show that the database has not been created.\n"
"Please create a database using 'nova-manage db sync' before running this "
"command."
msgstr ""
-#: nova/cmd/manage.py:241
+#: nova/cmd/manage.py:238
#, python-format
msgid "%(key)s is not a valid quota key. Valid options are: %(options)s."
msgstr ""
-#: nova/cmd/manage.py:247
+#: nova/cmd/manage.py:244
msgid "Quota"
msgstr ""
-#: nova/cmd/manage.py:248
+#: nova/cmd/manage.py:245
msgid "Limit"
msgstr ""
-#: nova/cmd/manage.py:249
+#: nova/cmd/manage.py:246
msgid "In Use"
msgstr ""
-#: nova/cmd/manage.py:250
+#: nova/cmd/manage.py:247
msgid "Reserved"
msgstr ""
-#: nova/cmd/manage.py:290 nova/cmd/manage.py:361 nova/cmd/manage.py:685
-#: nova/cmd/manage.py:698
+#: nova/cmd/manage.py:287 nova/cmd/manage.py:358 nova/cmd/manage.py:682
+#: nova/cmd/manage.py:695
#, python-format
msgid "error: %s"
msgstr ""
-#: nova/cmd/manage.py:298
+#: nova/cmd/manage.py:295
msgid "network"
msgstr ""
-#: nova/cmd/manage.py:299
+#: nova/cmd/manage.py:296
msgid "IP address"
msgstr ""
-#: nova/cmd/manage.py:300
+#: nova/cmd/manage.py:297
msgid "hostname"
msgstr ""
-#: nova/cmd/manage.py:301 nova/cmd/manage.py:818
+#: nova/cmd/manage.py:298 nova/cmd/manage.py:815
msgid "host"
msgstr ""
-#: nova/cmd/manage.py:313 nova/cmd/manage.py:337
+#: nova/cmd/manage.py:310 nova/cmd/manage.py:334
msgid "No fixed IP found."
msgstr ""
-#: nova/cmd/manage.py:329
+#: nova/cmd/manage.py:326
#, python-format
msgid "WARNING: fixed ip %s allocated to missing instance"
msgstr ""
-#: nova/cmd/manage.py:388
+#: nova/cmd/manage.py:385
#, python-format
msgid ""
"Too many IP addresses will be generated. Please increase /%s to reduce "
"the number generated."
msgstr ""
-#: nova/cmd/manage.py:437
+#: nova/cmd/manage.py:434
msgid "No floating IP addresses have been defined."
msgstr ""
-#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:212
+#: nova/cmd/manage.py:496 nova/tests/test_nova_manage.py:212
msgid "id"
msgstr ""
-#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:213
+#: nova/cmd/manage.py:497 nova/tests/test_nova_manage.py:213
msgid "IPv4"
msgstr ""
-#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:214
+#: nova/cmd/manage.py:498 nova/tests/test_nova_manage.py:214
msgid "IPv6"
msgstr ""
-#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:215
+#: nova/cmd/manage.py:499 nova/tests/test_nova_manage.py:215
msgid "start address"
msgstr ""
-#: nova/cmd/manage.py:503 nova/tests/test_nova_manage.py:216
+#: nova/cmd/manage.py:500 nova/tests/test_nova_manage.py:216
msgid "DNS1"
msgstr ""
-#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:217
+#: nova/cmd/manage.py:501 nova/tests/test_nova_manage.py:217
msgid "DNS2"
msgstr ""
-#: nova/cmd/manage.py:505 nova/tests/test_nova_manage.py:218
+#: nova/cmd/manage.py:502 nova/tests/test_nova_manage.py:218
msgid "VlanID"
msgstr ""
-#: nova/cmd/manage.py:506 nova/cmd/manage.py:612
+#: nova/cmd/manage.py:503 nova/cmd/manage.py:609
#: nova/tests/test_nova_manage.py:219
msgid "project"
msgstr ""
-#: nova/cmd/manage.py:507 nova/tests/test_nova_manage.py:220
+#: nova/cmd/manage.py:504 nova/tests/test_nova_manage.py:220
msgid "uuid"
msgstr ""
-#: nova/cmd/manage.py:514
+#: nova/cmd/manage.py:511
msgid "No networks found"
msgstr ""
-#: nova/cmd/manage.py:533
+#: nova/cmd/manage.py:530
msgid "Please specify either fixed_range or uuid"
msgstr ""
-#: nova/cmd/manage.py:538
+#: nova/cmd/manage.py:535
msgid "UUID is required to delete Quantum Networks"
msgstr ""
-#: nova/cmd/manage.py:541
+#: nova/cmd/manage.py:538
msgid "Deleting by fixed_range is not supported with the QuantumManager"
msgstr ""
-#: nova/cmd/manage.py:604
+#: nova/cmd/manage.py:601
msgid "instance"
msgstr ""
-#: nova/cmd/manage.py:605
+#: nova/cmd/manage.py:602
msgid "node"
msgstr ""
-#: nova/cmd/manage.py:606
+#: nova/cmd/manage.py:603
msgid "type"
msgstr ""
-#: nova/cmd/manage.py:607
+#: nova/cmd/manage.py:604
msgid "state"
msgstr ""
-#: nova/cmd/manage.py:608
+#: nova/cmd/manage.py:605
msgid "launched"
msgstr ""
-#: nova/cmd/manage.py:609
+#: nova/cmd/manage.py:606
msgid "image"
msgstr ""
-#: nova/cmd/manage.py:610
+#: nova/cmd/manage.py:607
msgid "kernel"
msgstr ""
-#: nova/cmd/manage.py:611
+#: nova/cmd/manage.py:608
msgid "ramdisk"
msgstr ""
-#: nova/cmd/manage.py:613
+#: nova/cmd/manage.py:610
msgid "user"
msgstr ""
-#: nova/cmd/manage.py:614 nova/cmd/manage.py:819
+#: nova/cmd/manage.py:611 nova/cmd/manage.py:816
msgid "zone"
msgstr ""
-#: nova/cmd/manage.py:615
+#: nova/cmd/manage.py:612
msgid "index"
msgstr ""
-#: nova/cmd/manage.py:660
+#: nova/cmd/manage.py:657
msgid "Binary"
msgstr ""
-#: nova/cmd/manage.py:661
+#: nova/cmd/manage.py:658
msgid "Host"
msgstr ""
-#: nova/cmd/manage.py:662
+#: nova/cmd/manage.py:659
msgid "Zone"
msgstr ""
-#: nova/cmd/manage.py:663
+#: nova/cmd/manage.py:660
msgid "Status"
msgstr ""
-#: nova/cmd/manage.py:664
+#: nova/cmd/manage.py:661
msgid "State"
msgstr ""
-#: nova/cmd/manage.py:665
+#: nova/cmd/manage.py:662
msgid "Updated_At"
msgstr ""
-#: nova/cmd/manage.py:687
+#: nova/cmd/manage.py:684
#, python-format
msgid "Service %(service)s on host %(host)s enabled."
msgstr ""
-#: nova/cmd/manage.py:700
+#: nova/cmd/manage.py:697
#, python-format
msgid "Service %(service)s on host %(host)s disabled."
msgstr ""
-#: nova/cmd/manage.py:767
+#: nova/cmd/manage.py:764
msgid "An unexpected error has occurred."
msgstr ""
-#: nova/cmd/manage.py:768
+#: nova/cmd/manage.py:765
msgid "[Result]"
msgstr ""
-#: nova/cmd/manage.py:772
+#: nova/cmd/manage.py:769
msgid "HOST"
msgstr ""
-#: nova/cmd/manage.py:773
+#: nova/cmd/manage.py:770
msgid "PROJECT"
msgstr ""
-#: nova/cmd/manage.py:774
+#: nova/cmd/manage.py:771
msgid "cpu"
msgstr ""
-#: nova/cmd/manage.py:775
+#: nova/cmd/manage.py:772
msgid "mem(mb)"
msgstr ""
-#: nova/cmd/manage.py:776
+#: nova/cmd/manage.py:773
msgid "hdd"
msgstr ""
-#: nova/cmd/manage.py:858
+#: nova/cmd/manage.py:855
msgid "Must supply a positive value for max_rows"
msgstr ""
-#: nova/cmd/manage.py:896
+#: nova/cmd/manage.py:893
msgid "Must supply valid parameters to create instance_type"
msgstr ""
-#: nova/cmd/manage.py:900
+#: nova/cmd/manage.py:897
msgid "Instance Type exists."
msgstr ""
-#: nova/cmd/manage.py:901
+#: nova/cmd/manage.py:898
msgid "Please ensure instance_type name and flavorid are unique."
msgstr ""
-#: nova/cmd/manage.py:903
+#: nova/cmd/manage.py:900
msgid "Currently defined instance_type names and flavorids:"
msgstr ""
-#: nova/cmd/manage.py:908
+#: nova/cmd/manage.py:905
msgid "Unknown error"
msgstr ""
-#: nova/cmd/manage.py:911
+#: nova/cmd/manage.py:908
#, python-format
msgid "%s created"
msgstr ""
-#: nova/cmd/manage.py:919
+#: nova/cmd/manage.py:916
msgid "Valid instance type name is required"
msgstr ""
-#: nova/cmd/manage.py:922
+#: nova/cmd/manage.py:919
#, python-format
msgid "DB Error: %s"
msgstr ""
-#: nova/cmd/manage.py:927
+#: nova/cmd/manage.py:924
#, python-format
msgid "%s deleted"
msgstr ""
-#: nova/cmd/manage.py:963
+#: nova/cmd/manage.py:960
#, python-format
msgid "Key %(key)s set to %(value)s on instance type %(name)s"
msgstr ""
-#: nova/cmd/manage.py:985
+#: nova/cmd/manage.py:982
#, python-format
msgid "Key %(key)s on instance type %(name)s unset"
msgstr ""
-#: nova/cmd/manage.py:1029
+#: nova/cmd/manage.py:1026
#, python-format
msgid "Hypervisor: %s"
msgstr ""
-#: nova/cmd/manage.py:1070
+#: nova/cmd/manage.py:1067
#, python-format
msgid "Line %(linenum)d : %(line)s"
msgstr ""
-#: nova/cmd/manage.py:1072
+#: nova/cmd/manage.py:1069
msgid "No errors in logfiles!"
msgstr ""
-#: nova/cmd/manage.py:1084
+#: nova/cmd/manage.py:1081
msgid "Unable to find system log file!"
msgstr ""
-#: nova/cmd/manage.py:1088
+#: nova/cmd/manage.py:1085
#, python-format
msgid "Last %s nova syslog entries:-"
msgstr ""
-#: nova/cmd/manage.py:1097
+#: nova/cmd/manage.py:1094
msgid "No nova entries in syslog!"
msgstr ""
-#: nova/compute/api.py:282
+#: nova/compute/api.py:281
msgid "Cannot run any more instances of this type."
msgstr ""
-#: nova/compute/api.py:289
+#: nova/compute/api.py:288
#, python-format
msgid "Can only run %s more instances of this type."
msgstr ""
-#: nova/compute/api.py:298
+#: nova/compute/api.py:297
#, python-format
msgid ""
"%(overs)s quota exceeded for %(pid)s, tried to run %(min_count)s "
"instances. %(msg)s"
msgstr ""
-#: nova/compute/api.py:318
+#: nova/compute/api.py:317
#, python-format
msgid ""
"Quota exceeded for %(pid)s, tried to set %(num_metadata)s metadata "
"properties"
msgstr ""
-#: nova/compute/api.py:328
+#: nova/compute/api.py:327
msgid "Metadata property key blank"
msgstr ""
-#: nova/compute/api.py:332
+#: nova/compute/api.py:331
msgid "Metadata property key greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:336
+#: nova/compute/api.py:335
msgid "Metadata property value greater than 255 characters"
msgstr ""
-#: nova/compute/api.py:469
+#: nova/compute/api.py:468
msgid "Failed to set instance name using multi_instance_display_name_template."
msgstr ""
-#: nova/compute/api.py:509
+#: nova/compute/api.py:508
#, fuzzy
msgid "Cannot attach one or more volumes to multiple instances"
msgstr "無法掛載Volume 到虛擬機器 %s"
-#: nova/compute/api.py:623
+#: nova/compute/api.py:622
#, python-format
msgid "Going to run %s instances..."
msgstr ""
-#: nova/compute/api.py:739
+#: nova/compute/api.py:738
#, python-format
msgid "bdm %s"
msgstr ""
-#: nova/compute/api.py:766
+#: nova/compute/api.py:765
#, python-format
msgid "block_device_mapping %s"
msgstr ""
-#: nova/compute/api.py:1040
+#: nova/compute/api.py:1036
#, fuzzy
msgid "instance termination disabled"
msgstr "建立虛擬介é¢å¤±æ•—"
-#: nova/compute/api.py:1176
+#: nova/compute/api.py:1172
#, python-format
msgid "instance type %(old_inst_type_id)d not found"
msgstr ""
-#: nova/compute/api.py:1182
+#: nova/compute/api.py:1178
msgid "going to delete a resizing instance"
msgstr ""
-#: nova/compute/api.py:1192
+#: nova/compute/api.py:1188
#, python-format
msgid "instance's host %s is down, deleting from database"
msgstr ""
-#: nova/compute/api.py:1236
+#: nova/compute/api.py:1232
msgid "Going to try to soft delete instance"
msgstr ""
-#: nova/compute/api.py:1260
+#: nova/compute/api.py:1256
msgid "Going to try to terminate instance"
msgstr ""
-#: nova/compute/api.py:1310
+#: nova/compute/api.py:1306
msgid "Going to try to stop instance"
msgstr ""
-#: nova/compute/api.py:1327
+#: nova/compute/api.py:1323
msgid "Going to try to start instance"
msgstr ""
-#: nova/compute/api.py:1400
+#: nova/compute/api.py:1396
#, python-format
msgid "Searching by: %s"
msgstr ""
-#: nova/compute/api.py:1637
+#: nova/compute/api.py:1633
#, python-format
msgid "snapshot for %s"
msgstr ""
-#: nova/compute/api.py:1988
+#: nova/compute/api.py:1984
msgid "flavor_id is None. Assuming migration."
msgstr ""
-#: nova/compute/api.py:1997
+#: nova/compute/api.py:1993
#, python-format
msgid ""
"Old instance type %(current_instance_type_name)s, new instance type "
"%(new_instance_type_name)s"
msgstr ""
-#: nova/compute/api.py:2039
+#: nova/compute/api.py:2035
#, python-format
msgid "%(overs)s quota exceeded for %(pid)s, tried to resize instance."
msgstr ""
-#: nova/compute/api.py:2179
+#: nova/compute/api.py:2175
msgid "Cannot rescue a volume-backed instance"
msgstr ""
-#: nova/compute/api.py:2286
+#: nova/compute/api.py:2282
msgid "Locking"
msgstr ""
-#: nova/compute/api.py:2294
+#: nova/compute/api.py:2290
msgid "Unlocking"
msgstr ""
-#: nova/compute/api.py:2366
+#: nova/compute/api.py:2362
msgid "Volume must be attached in order to detach."
msgstr ""
-#: nova/compute/api.py:2479
+#: nova/compute/api.py:2475
#, python-format
msgid "Going to try to live migrate instance to %s"
msgstr ""
-#: nova/compute/api.py:2498
+#: nova/compute/api.py:2494
msgid "vm evacuation scheduled"
msgstr ""
-#: nova/compute/api.py:2502
+#: nova/compute/api.py:2498
#, python-format
msgid ""
"Instance compute service state on %(inst_host)s expected to be down, but "
"it was up."
msgstr ""
-#: nova/compute/api.py:2749
+#: nova/compute/api.py:2745
msgid "Keypair name contains unsafe characters"
msgstr ""
-#: nova/compute/api.py:2753
+#: nova/compute/api.py:2749
msgid "Keypair name must be between 1 and 255 characters long"
msgstr ""
-#: nova/compute/api.py:2850
+#: nova/compute/api.py:2845
#, python-format
msgid "Security group %s is not a string or unicode"
msgstr ""
-#: nova/compute/api.py:2853
+#: nova/compute/api.py:2848
#, python-format
msgid "Security group %s cannot be empty."
msgstr ""
-#: nova/compute/api.py:2861
+#: nova/compute/api.py:2856
#, python-format
msgid ""
"Value (%(value)s) for parameter Group%(property)s is invalid. Content "
"limited to '%(allowed)'."
msgstr ""
-#: nova/compute/api.py:2867
+#: nova/compute/api.py:2862
#, python-format
msgid "Security group %s should not be greater than 255 characters."
msgstr ""
-#: nova/compute/api.py:2887
+#: nova/compute/api.py:2880
msgid "Quota exceeded, too many security groups."
msgstr ""
-#: nova/compute/api.py:2890
+#: nova/compute/api.py:2883
#, python-format
msgid "Create Security Group %s"
msgstr ""
-#: nova/compute/api.py:2897
+#: nova/compute/api.py:2890
#, python-format
msgid "Security group %s already exists"
msgstr ""
-#: nova/compute/api.py:2962
+#: nova/compute/api.py:2954
#, fuzzy, python-format
msgid "Unable to delete system group '%s'"
msgstr "找ä¸åˆ°Volume %s"
-#: nova/compute/api.py:2967
+#: nova/compute/api.py:2959
msgid "Security group is still in use"
msgstr ""
-#: nova/compute/api.py:2975
+#: nova/compute/api.py:2967
msgid "Failed to update usages deallocating security group"
msgstr ""
-#: nova/compute/api.py:2978
+#: nova/compute/api.py:2970
#, python-format
msgid "Delete security group %s"
msgstr ""
-#: nova/compute/api.py:3064 nova/compute/api.py:3141
+#: nova/compute/api.py:3047 nova/compute/api.py:3121
#, python-format
msgid "Rule (%s) not found"
msgstr ""
-#: nova/compute/api.py:3080
+#: nova/compute/api.py:3063
msgid "Quota exceeded, too many security group rules."
msgstr ""
-#: nova/compute/api.py:3083
+#: nova/compute/api.py:3066
#, python-format
msgid "Authorize security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3094
+#: nova/compute/api.py:3075
#, python-format
msgid "Revoke security group ingress %s"
msgstr ""
-#: nova/compute/api.py:3148
+#: nova/compute/api.py:3128
msgid "Security group id should be integer"
msgstr ""
@@ -4057,34 +4069,34 @@ msgid ""
"%(requested)d %(unit)s"
msgstr ""
-#: nova/compute/instance_types.py:96
+#: nova/compute/flavors.py:96
msgid "names can only contain [a-zA-Z0-9_.- ]"
msgstr ""
-#: nova/compute/instance_types.py:105
+#: nova/compute/flavors.py:105
#, python-format
msgid "'%s' argument must be a positive integer"
msgstr ""
-#: nova/compute/instance_types.py:113
+#: nova/compute/flavors.py:113
msgid "'rxtx_factor' argument must be a positive float"
msgstr ""
-#: nova/compute/instance_types.py:121
+#: nova/compute/flavors.py:121
#, python-format
msgid "'%s' argument must be greater than 0"
msgstr ""
-#: nova/compute/instance_types.py:131
+#: nova/compute/flavors.py:131
msgid "is_public must be a boolean"
msgstr ""
-#: nova/compute/instance_types.py:138
+#: nova/compute/flavors.py:138
#, python-format
msgid "DB error: %s"
msgstr ""
-#: nova/compute/instance_types.py:148
+#: nova/compute/flavors.py:148
#, python-format
msgid "Instance type %s not found for deletion"
msgstr ""
@@ -4314,7 +4326,7 @@ msgid "Ignoring volume cleanup failure due to %s"
msgstr ""
#: nova/compute/manager.py:1474 nova/compute/manager.py:2615
-#: nova/compute/manager.py:4117
+#: nova/compute/manager.py:4124
#, python-format
msgid "%s. Setting instance vm_state to ERROR"
msgstr ""
@@ -4569,181 +4581,181 @@ msgstr ""
msgid "Host %(host)s not found"
msgstr ""
-#: nova/compute/manager.py:3271
+#: nova/compute/manager.py:3278
#, python-format
msgid "Pre live migration failed at %(dest)s"
msgstr ""
-#: nova/compute/manager.py:3299
+#: nova/compute/manager.py:3306
msgid "_post_live_migration() is started.."
msgstr ""
-#: nova/compute/manager.py:3354
+#: nova/compute/manager.py:3361
#, python-format
msgid "Migrating instance to %(dest)s finished successfully."
msgstr ""
-#: nova/compute/manager.py:3356
+#: nova/compute/manager.py:3363
msgid ""
"You may see the error \"libvirt: QEMU error: Domain not found: no domain "
"with matching name.\" This error can be safely ignored."
msgstr ""
-#: nova/compute/manager.py:3370
+#: nova/compute/manager.py:3377
msgid "Post operation of migration started"
msgstr ""
-#: nova/compute/manager.py:3399
+#: nova/compute/manager.py:3406
#, python-format
msgid "Failed to get compute_info for %s"
msgstr ""
-#: nova/compute/manager.py:3518
+#: nova/compute/manager.py:3525
msgid "Updated the info_cache for instance"
msgstr ""
-#: nova/compute/manager.py:3563
+#: nova/compute/manager.py:3570
#, python-format
msgid ""
"Found %(migration_count)d unconfirmed migrations older than "
"%(confirm_window)d seconds"
msgstr ""
-#: nova/compute/manager.py:3569
+#: nova/compute/manager.py:3576
#, python-format
msgid "Setting migration %(migration_id)s to error: %(reason)s"
msgstr ""
-#: nova/compute/manager.py:3578
+#: nova/compute/manager.py:3585
#, python-format
msgid ""
"Automatically confirming migration %(migration_id)s for instance "
"%(instance_uuid)s"
msgstr ""
-#: nova/compute/manager.py:3585
+#: nova/compute/manager.py:3592
#, python-format
msgid "Instance %(instance_uuid)s not found"
msgstr ""
-#: nova/compute/manager.py:3589
+#: nova/compute/manager.py:3596
msgid "In ERROR state"
msgstr ""
-#: nova/compute/manager.py:3596
+#: nova/compute/manager.py:3603
#, python-format
msgid "In states %(vm_state)s/%(task_state)s, not RESIZED/None"
msgstr ""
-#: nova/compute/manager.py:3605
+#: nova/compute/manager.py:3612
#, python-format
msgid "Error auto-confirming resize: %(e)s. Will retry later."
msgstr ""
-#: nova/compute/manager.py:3622
+#: nova/compute/manager.py:3629
#, python-format
msgid ""
"Running instance usage audit for host %(host)s from %(begin_time)s to "
"%(end_time)s. %(number_instances)s instances."
msgstr ""
-#: nova/compute/manager.py:3641
+#: nova/compute/manager.py:3648
#, python-format
msgid "Failed to generate usage audit for instance on host %s"
msgstr ""
-#: nova/compute/manager.py:3665
+#: nova/compute/manager.py:3672
msgid "Updating bandwidth usage cache"
msgstr ""
-#: nova/compute/manager.py:3782
+#: nova/compute/manager.py:3789
msgid "Updating volume usage cache"
msgstr ""
-#: nova/compute/manager.py:3799
+#: nova/compute/manager.py:3806
msgid "Updating host status"
msgstr ""
-#: nova/compute/manager.py:3826
+#: nova/compute/manager.py:3833
#, python-format
msgid ""
"Found %(num_db_instances)s in the database and %(num_vm_instances)s on "
"the hypervisor."
msgstr ""
-#: nova/compute/manager.py:3831 nova/compute/manager.py:3881
+#: nova/compute/manager.py:3838 nova/compute/manager.py:3888
msgid "During sync_power_state the instance has a pending task. Skip."
msgstr ""
-#: nova/compute/manager.py:3868
+#: nova/compute/manager.py:3875
#, python-format
msgid ""
"During the sync_power process the instance has moved from host %(src)s to"
" host %(dst)s"
msgstr ""
-#: nova/compute/manager.py:3906
+#: nova/compute/manager.py:3913
msgid "Instance shutdown by itself. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3918 nova/compute/manager.py:3927
-#: nova/compute/manager.py:3957
+#: nova/compute/manager.py:3925 nova/compute/manager.py:3934
+#: nova/compute/manager.py:3964
msgid "error during stop() in sync_power_state."
msgstr ""
-#: nova/compute/manager.py:3922
+#: nova/compute/manager.py:3929
msgid "Instance is suspended unexpectedly. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3938
+#: nova/compute/manager.py:3945
msgid "Instance is paused unexpectedly. Ignore."
msgstr ""
-#: nova/compute/manager.py:3944
+#: nova/compute/manager.py:3951
msgid "Instance is unexpectedly not found. Ignore."
msgstr ""
-#: nova/compute/manager.py:3950
+#: nova/compute/manager.py:3957
msgid "Instance is not stopped. Calling the stop API."
msgstr ""
-#: nova/compute/manager.py:3966
+#: nova/compute/manager.py:3973
msgid "Instance is not (soft-)deleted."
msgstr ""
-#: nova/compute/manager.py:3974
+#: nova/compute/manager.py:3981
msgid "CONF.reclaim_instance_interval <= 0, skipping..."
msgstr ""
-#: nova/compute/manager.py:3994
+#: nova/compute/manager.py:4001
msgid "Reclaiming deleted instance"
msgstr ""
-#: nova/compute/manager.py:4021
+#: nova/compute/manager.py:4028
#, python-format
msgid "Deleting orphan compute node %s"
msgstr ""
-#: nova/compute/manager.py:4031 nova/compute/resource_tracker.py:321
+#: nova/compute/manager.py:4038 nova/compute/resource_tracker.py:321
#, python-format
msgid "No service record for host %s"
msgstr ""
-#: nova/compute/manager.py:4072
+#: nova/compute/manager.py:4079
#, python-format
msgid ""
"Detected instance with name label '%(name)s' which is marked as DELETED "
"but still present on host."
msgstr ""
-#: nova/compute/manager.py:4079
+#: nova/compute/manager.py:4086
#, python-format
msgid ""
"Destroying instance with name label '%(name)s' which is marked as DELETED"
" but still present on host."
msgstr ""
-#: nova/compute/manager.py:4086
+#: nova/compute/manager.py:4093
#, python-format
msgid "Unrecognized value '%(action)s' for CONF.running_deleted_instance_action"
msgstr ""
@@ -4962,16 +4974,16 @@ msgstr ""
msgid "Failed to notify cells of instance fault"
msgstr ""
-#: nova/db/sqlalchemy/api.py:154
+#: nova/db/sqlalchemy/api.py:157
#, python-format
msgid "Deadlock detected when running '%(func_name)s': Retrying..."
msgstr ""
-#: nova/db/sqlalchemy/api.py:189
+#: nova/db/sqlalchemy/api.py:192
msgid "model or base_model parameter should be subclass of NovaBase"
msgstr ""
-#: nova/db/sqlalchemy/api.py:202 nova/virt/baremetal/db/sqlalchemy/api.py:61
+#: nova/db/sqlalchemy/api.py:205 nova/virt/baremetal/db/sqlalchemy/api.py:61
#, python-format
msgid "Unrecognized read_deleted value '%s'"
msgstr ""
@@ -4983,17 +4995,17 @@ msgid ""
"empty, \"global\" or \"project\""
msgstr ""
-#: nova/db/sqlalchemy/api.py:1543
+#: nova/db/sqlalchemy/api.py:1546
#, python-format
msgid "Invalid instance id %s in request"
msgstr ""
-#: nova/db/sqlalchemy/api.py:2834
+#: nova/db/sqlalchemy/api.py:2836
#, python-format
msgid "Change will make usage less than 0 for the following resources: %(unders)s"
msgstr ""
-#: nova/db/sqlalchemy/api.py:4335
+#: nova/db/sqlalchemy/api.py:4344
#, python-format
msgid ""
"Volume(%s) has lower stats then what is in the database. Instance must "
@@ -5010,34 +5022,60 @@ msgstr ""
msgid "Upgrade DB using Essex release first."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:61
+#: nova/db/sqlalchemy/utils.py:53
#, python-format
msgid ""
"Please specify column %s in col_name_col_instance param. It is required "
"because column has unsupported type by sqlite)."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:67
+#: nova/db/sqlalchemy/utils.py:59
#, python-format
msgid ""
"col_name_col_instance param has wrong type of column instance for column "
"%s It should be instance of sqlalchemy.Column."
msgstr ""
-#: nova/db/sqlalchemy/utils.py:155
+#: nova/db/sqlalchemy/utils.py:161
#, python-format
msgid "Deleted duplicated row with id: %(id)s from table: %(table)s"
msgstr ""
-#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
-msgid "Exception while seeding instance_types table"
+#: nova/db/sqlalchemy/utils.py:195
+#, python-format
+msgid "Missing column %(table)s.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:201
+#, python-format
+msgid ""
+"Different types in %(table)s.%(column)s and shadow table: %(c_type)s "
+"%(shadow_c_type)s"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:210
+#, python-format
+msgid "Extra column %(table)%.%(column)s in shadow table"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:231
+msgid "Specify `table_name` or `table` param"
+msgstr ""
+
+#: nova/db/sqlalchemy/utils.py:234
+msgid "Specify only one param `table_name` `table`"
msgstr ""
+#: nova/db/sqlalchemy/utils.py:255
#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927
#: nova/db/sqlalchemy/migrate_repo/versions/154_add_shadow_tables.py:58
msgid "Exception while creating table."
msgstr ""
+#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62
+msgid "Exception while seeding instance_types table"
+msgstr ""
+
#: nova/db/sqlalchemy/migrate_repo/versions/145_add_volume_usage_cache.py:68
msgid "volume_usage_cache table not dropped"
msgstr ""
@@ -5173,31 +5211,31 @@ msgstr ""
msgid "Failed to update usages deallocating floating IP"
msgstr ""
-#: nova/network/floating_ips.py:531
+#: nova/network/floating_ips.py:532
#, python-format
msgid "Starting migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:538
+#: nova/network/floating_ips.py:539
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notmigrate it "
msgstr ""
-#: nova/network/floating_ips.py:573
+#: nova/network/floating_ips.py:574
#, python-format
msgid "Finishing migration network for instance %(instance_uuid)s"
msgstr ""
-#: nova/network/floating_ips.py:581
+#: nova/network/floating_ips.py:582
#, python-format
msgid ""
"Floating ip address |%(address)s| no longer belongs to instance "
"%(instance_uuid)s. Will notsetup it."
msgstr ""
-#: nova/network/floating_ips.py:629
+#: nova/network/floating_ips.py:630
#, python-format
msgid ""
"Database inconsistency: DNS domain |%s| is registered in the Nova db but "
@@ -5205,12 +5243,12 @@ msgid ""
"ignored."
msgstr ""
-#: nova/network/floating_ips.py:669
+#: nova/network/floating_ips.py:670
#, python-format
msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|."
msgstr ""
-#: nova/network/floating_ips.py:678
+#: nova/network/floating_ips.py:679
#, python-format
msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|."
msgstr ""
@@ -5345,20 +5383,20 @@ msgstr ""
msgid "setting network host"
msgstr ""
-#: nova/network/manager.py:495
+#: nova/network/manager.py:480
msgid "network allocations"
msgstr ""
-#: nova/network/manager.py:502
+#: nova/network/manager.py:487
#, python-format
msgid "networks retrieved for instance: |%(networks_list)s|"
msgstr ""
-#: nova/network/manager.py:550
+#: nova/network/manager.py:535
msgid "network deallocation for instance"
msgstr ""
-#: nova/network/manager.py:816
+#: nova/network/manager.py:801
#, python-format
msgid ""
"instance-dns-zone is |%(domain)s|, which is in availability zone "
@@ -5366,98 +5404,98 @@ msgid ""
"created."
msgstr ""
-#: nova/network/manager.py:842
+#: nova/network/manager.py:827
#, python-format
msgid "Quota exceeded for %(pid)s, tried to allocate fixed IP"
msgstr ""
-#: nova/network/manager.py:896
+#: nova/network/manager.py:879
msgid "Failed to update usages deallocating fixed IP"
msgstr ""
-#: nova/network/manager.py:930
+#: nova/network/manager.py:911
#, python-format
msgid "Unable to release %s because vif doesn't exist."
msgstr ""
-#: nova/network/manager.py:953
+#: nova/network/manager.py:934
#, python-format
msgid "Leased IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:957
+#: nova/network/manager.py:938
#, python-format
msgid "IP %s leased that is not associated"
msgstr ""
-#: nova/network/manager.py:966
+#: nova/network/manager.py:947
#, python-format
msgid "IP |%s| leased that isn't allocated"
msgstr ""
-#: nova/network/manager.py:971
+#: nova/network/manager.py:952
#, python-format
msgid "Released IP |%(address)s|"
msgstr ""
-#: nova/network/manager.py:975
+#: nova/network/manager.py:956
#, python-format
msgid "IP %s released that is not associated"
msgstr ""
-#: nova/network/manager.py:979
+#: nova/network/manager.py:960
#, python-format
msgid "IP %s released that was not leased"
msgstr ""
-#: nova/network/manager.py:998
+#: nova/network/manager.py:979
#, python-format
msgid "%s must be an integer"
msgstr ""
-#: nova/network/manager.py:1022
+#: nova/network/manager.py:1003
msgid "Maximum allowed length for 'label' is 255."
msgstr ""
-#: nova/network/manager.py:1042
+#: nova/network/manager.py:1023
#, python-format
msgid ""
"Subnet(s) too large, defaulting to /%s. To override, specify "
"network_size flag."
msgstr ""
-#: nova/network/manager.py:1123
+#: nova/network/manager.py:1104
msgid "cidr already in use"
msgstr ""
-#: nova/network/manager.py:1126
+#: nova/network/manager.py:1107
#, python-format
msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)"
msgstr ""
-#: nova/network/manager.py:1137
+#: nova/network/manager.py:1118
#, python-format
msgid ""
"requested cidr (%(cidr)s) conflicts with existing smaller cidr "
"(%(smaller)s)"
msgstr ""
-#: nova/network/manager.py:1194
+#: nova/network/manager.py:1175
msgid "Network already exists!"
msgstr ""
-#: nova/network/manager.py:1213
+#: nova/network/manager.py:1194
#, python-format
msgid "Network must be disassociated from project %s before delete"
msgstr ""
-#: nova/network/manager.py:1813
+#: nova/network/manager.py:1794
msgid ""
"The sum between the number of networks and the vlan start cannot be "
"greater than 4094"
msgstr ""
-#: nova/network/manager.py:1820
+#: nova/network/manager.py:1801
#, python-format
msgid ""
"The network range is not big enough to fit %(num_networks)s networks. "
@@ -5528,44 +5566,44 @@ msgstr ""
msgid "Fail to delete port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:321
+#: nova/network/quantumv2/api.py:318
#, python-format
msgid "deallocate_for_instance() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:330
+#: nova/network/quantumv2/api.py:327
#, python-format
msgid "Failed to delete quantum port %(portid)s "
msgstr ""
-#: nova/network/quantumv2/api.py:354
+#: nova/network/quantumv2/api.py:349
#, python-format
msgid "Failed to delete quantum port %(port_id)s "
msgstr ""
-#: nova/network/quantumv2/api.py:381
+#: nova/network/quantumv2/api.py:373
#, python-format
msgid "get_instance_nw_info() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:413
+#: nova/network/quantumv2/api.py:405
#, python-format
msgid ""
"Unable to update port %(portid)s on subnet %(subnet_id)s with failure: "
"%(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:443
+#: nova/network/quantumv2/api.py:435
#, python-format
msgid "Unable to update port %(portid)s with failure: %(exception)s"
msgstr ""
-#: nova/network/quantumv2/api.py:453
+#: nova/network/quantumv2/api.py:445
#, python-format
msgid "validate_networks() for %s"
msgstr ""
-#: nova/network/quantumv2/api.py:722
+#: nova/network/quantumv2/api.py:688
#, python-format
msgid "Multiple floating IP pools matches found for name '%s'"
msgstr ""
@@ -5753,17 +5791,17 @@ msgstr ""
msgid "Failed to understand rule %(rule)r"
msgstr ""
-#: nova/openstack/common/processutils.py:122
+#: nova/openstack/common/processutils.py:127
#, python-format
msgid "Got unknown keyword args to utils.execute: %r"
msgstr ""
-#: nova/openstack/common/processutils.py:137
+#: nova/openstack/common/processutils.py:142
#, python-format
msgid "Running cmd (subprocess): %s"
msgstr ""
-#: nova/openstack/common/processutils.py:174
+#: nova/openstack/common/processutils.py:179
#, python-format
msgid "%r failed. Retrying."
msgstr ""
@@ -6682,17 +6720,17 @@ msgstr ""
msgid "unexpected role header"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3338
+#: nova/tests/api/openstack/compute/test_servers.py:3340
msgid ""
"Quota exceeded for instances: Requested 1, but already used 10 of 10 "
"instances"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3343
+#: nova/tests/api/openstack/compute/test_servers.py:3345
msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram"
msgstr ""
-#: nova/tests/api/openstack/compute/test_servers.py:3348
+#: nova/tests/api/openstack/compute/test_servers.py:3350
msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores"
msgstr ""
@@ -6727,16 +6765,16 @@ msgstr ""
msgid "wrong host/node"
msgstr ""
-#: nova/tests/compute/test_compute.py:8707
+#: nova/tests/compute/test_compute.py:8725
msgid "spawn error"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:174
+#: nova/tests/integrated/test_api_samples.py:177
#, python-format
msgid "%(result_str)s: %(result)s is not a dict."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:188
+#: nova/tests/integrated/test_api_samples.py:191
#, python-format
msgid ""
"Dictionary key mismatch:\n"
@@ -6746,22 +6784,22 @@ msgid ""
"%(res_delta)s\n"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:199
+#: nova/tests/integrated/test_api_samples.py:202
#, python-format
msgid "%(result_str)s: %(result)s is not a list."
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:218
+#: nova/tests/integrated/test_api_samples.py:221
msgid "Extra list items in template:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:222
+#: nova/tests/integrated/test_api_samples.py:225
#, python-format
msgid "Extra list items in %(result_str)s:"
msgstr ""
-#: nova/tests/integrated/test_api_samples.py:243
-#: nova/tests/integrated/test_api_samples.py:258
+#: nova/tests/integrated/test_api_samples.py:246
+#: nova/tests/integrated/test_api_samples.py:261
#, python-format
msgid ""
"Values do not match:\n"
@@ -7646,7 +7684,7 @@ msgstr ""
msgid "get_available_resource called"
msgstr ""
-#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3740
+#: nova/virt/hyperv/hostops.py:135 nova/virt/libvirt/driver.py:3835
#: nova/virt/xenapi/host.py:148
msgid "Updating host stats"
msgstr ""
@@ -7739,12 +7777,12 @@ msgstr ""
msgid "Live migration networks are not configured on this host"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:95
+#: nova/virt/hyperv/livemigrationutils.py:70 nova/virt/hyperv/vmutils.py:103
#, python-format
msgid "VM not found: %s"
msgstr ""
-#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:104
+#: nova/virt/hyperv/livemigrationutils.py:72 nova/virt/hyperv/vmutils.py:112
#, python-format
msgid "Duplicate VM name found: %s"
msgstr ""
@@ -7799,62 +7837,69 @@ msgstr ""
msgid "Cannot cleanup migration files"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:101
+#: nova/virt/hyperv/migrationops.py:103
+#, python-format
+msgid ""
+"Cannot resize the root disk to a smaller size. Current size: "
+"%(curr_root_gb)s GB. Requested size: %(new_root_gb)s GB"
+msgstr ""
+
+#: nova/virt/hyperv/migrationops.py:113
msgid "migrate_disk_and_power_off called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:119
+#: nova/virt/hyperv/migrationops.py:133
msgid "confirm_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:134
+#: nova/virt/hyperv/migrationops.py:148
msgid "finish_revert_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:152
+#: nova/virt/hyperv/migrationops.py:166
#, python-format
msgid "Copying base disk %(base_vhd_path)s to %(base_vhd_copy_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:156
+#: nova/virt/hyperv/migrationops.py:170
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_copy_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:162
+#: nova/virt/hyperv/migrationops.py:176
#, python-format
msgid "Merging base disk %(base_vhd_copy_path)s and diff disk %(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:174
+#: nova/virt/hyperv/migrationops.py:188
#, fuzzy, python-format
msgid "Getting info for disk: %s"
msgstr "無法掛載Volume 到虛擬機器 %s"
-#: nova/virt/hyperv/migrationops.py:179
+#: nova/virt/hyperv/migrationops.py:193
#, python-format
msgid "Resizing disk \"%(vhd_path)s\" to new max size %(new_size)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:190
+#: nova/virt/hyperv/migrationops.py:204
#, python-format
msgid ""
"Reconnecting copied base VHD %(base_vhd_path)s and diff VHD "
"%(diff_vhd_path)s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:199
+#: nova/virt/hyperv/migrationops.py:213
msgid "finish_migration called"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:208
+#: nova/virt/hyperv/migrationops.py:222
#, python-format
msgid "Cannot find boot VHD file: %s"
msgstr ""
-#: nova/virt/hyperv/migrationops.py:221 nova/virt/hyperv/vmops.py:136
+#: nova/virt/hyperv/migrationops.py:235 nova/virt/hyperv/vmops.py:136
msgid "Cannot resize a VHD to a smaller size"
msgstr ""
@@ -7991,12 +8036,12 @@ msgstr ""
msgid "Using config drive for instance: %s"
msgstr "無法掛載Volume 到虛擬機器 %s"
-#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1870
+#: nova/virt/hyperv/vmops.py:227 nova/virt/libvirt/driver.py:1876
#, python-format
msgid "Creating config drive at %(path)s"
msgstr ""
-#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1877
+#: nova/virt/hyperv/vmops.py:235 nova/virt/libvirt/driver.py:1883
#, python-format
msgid "Creating config drive failed with error: %s"
msgstr ""
@@ -8055,58 +8100,58 @@ msgstr ""
msgid "Failed to change vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:75
+#: nova/virt/hyperv/vmutils.py:83
#, python-format
msgid "Cannot get VM summary data for: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:152
+#: nova/virt/hyperv/vmutils.py:160
#, python-format
msgid "Creating VM %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:161
+#: nova/virt/hyperv/vmutils.py:169
#, python-format
msgid "Setting memory for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:164
+#: nova/virt/hyperv/vmutils.py:172
#, python-format
msgid "Set vCPUs for vm %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:262
+#: nova/virt/hyperv/vmutils.py:270
msgid "Controller not found"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:324
+#: nova/virt/hyperv/vmutils.py:332
#, python-format
msgid "Successfully changed vm state of %(vm_name)s to %(req_state)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:365
+#: nova/virt/hyperv/vmutils.py:373
#, python-format
msgid "Operation failed with return value: %s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:383
+#: nova/virt/hyperv/vmutils.py:391
#, python-format
msgid ""
"WMI job failed with status %(job_state)d. Error details: %(err_sum_desc)s"
" - %(err_desc)s - Error code: %(err_code)d"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:391
+#: nova/virt/hyperv/vmutils.py:399
#, python-format
msgid "WMI job failed with status %(job_state)d. Error details: %(error)s"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:395
+#: nova/virt/hyperv/vmutils.py:403
#, python-format
msgid "WMI job failed with status %(job_state)d. No error description available"
msgstr ""
-#: nova/virt/hyperv/vmutils.py:401
+#: nova/virt/hyperv/vmutils.py:409
#, python-format
msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s"
msgstr ""
@@ -8155,7 +8200,7 @@ msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s"
msgid "Detaching physical disk from instance: %s"
msgstr "無法掛載Volume 到虛擬機器 %s"
-#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:897
+#: nova/virt/hyperv/volumeops.py:186 nova/virt/libvirt/driver.py:902
msgid "Could not determine iscsi initiator name"
msgstr ""
@@ -8189,236 +8234,236 @@ msgstr ""
msgid "Unable to determine disk bus for '%s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:341
+#: nova/virt/libvirt/driver.py:346
#, python-format
msgid "Invalid cachemode %(cache_mode)s specified for disk type %(disk_type)s."
msgstr ""
-#: nova/virt/libvirt/driver.py:547
+#: nova/virt/libvirt/driver.py:552
#, python-format
msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater."
msgstr ""
-#: nova/virt/libvirt/driver.py:555
+#: nova/virt/libvirt/driver.py:560
#, python-format
msgid "Connecting to libvirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:572
+#: nova/virt/libvirt/driver.py:577
#, python-format
msgid "URI %s does not support events"
msgstr ""
-#: nova/virt/libvirt/driver.py:588
+#: nova/virt/libvirt/driver.py:593
msgid "Connection to libvirt broke"
msgstr ""
-#: nova/virt/libvirt/driver.py:610 nova/virt/libvirt/driver.py:613
+#: nova/virt/libvirt/driver.py:615 nova/virt/libvirt/driver.py:618
#, python-format
msgid "Can not handle authentication request for %d credentials"
msgstr ""
-#: nova/virt/libvirt/driver.py:631
+#: nova/virt/libvirt/driver.py:636
#, fuzzy, python-format
msgid "Connection to libvirt failed: %s"
msgstr "連接到glance失敗"
-#: nova/virt/libvirt/driver.py:722
+#: nova/virt/libvirt/driver.py:727
#, python-format
msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:737
+#: nova/virt/libvirt/driver.py:742
msgid "During wait destroy, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:742
+#: nova/virt/libvirt/driver.py:747
msgid "Instance destroyed successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:752
+#: nova/virt/libvirt/driver.py:757
msgid "Instance may be started again."
msgstr ""
-#: nova/virt/libvirt/driver.py:762
+#: nova/virt/libvirt/driver.py:767
msgid "Going to destroy instance again."
msgstr ""
-#: nova/virt/libvirt/driver.py:781
+#: nova/virt/libvirt/driver.py:786
msgid "Error from libvirt during undefineFlags. Retrying with undefine"
msgstr ""
-#: nova/virt/libvirt/driver.py:797
+#: nova/virt/libvirt/driver.py:802
#, python-format
msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:817
+#: nova/virt/libvirt/driver.py:822
msgid "Instance may be still running, destroy it again."
msgstr ""
-#: nova/virt/libvirt/driver.py:823
+#: nova/virt/libvirt/driver.py:828
#, python-format
msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:851
+#: nova/virt/libvirt/driver.py:856
#, python-format
msgid "Deleting instance files %(target)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:860
+#: nova/virt/libvirt/driver.py:865
#, python-format
msgid "Failed to cleanup directory %(target)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:903
+#: nova/virt/libvirt/driver.py:908
msgid "Could not determine fibre channel world wide node names"
msgstr ""
-#: nova/virt/libvirt/driver.py:910
+#: nova/virt/libvirt/driver.py:915
msgid "Could not determine fibre channel world wide port names"
msgstr ""
-#: nova/virt/libvirt/driver.py:915
+#: nova/virt/libvirt/driver.py:920
msgid "No Volume Connector found."
msgstr ""
-#: nova/virt/libvirt/driver.py:1037
+#: nova/virt/libvirt/driver.py:1042
msgid "During detach_volume, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1061
+#: nova/virt/libvirt/driver.py:1066
msgid "attaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1081
+#: nova/virt/libvirt/driver.py:1086
msgid "During detach_interface, instance disappeared."
msgstr ""
-#: nova/virt/libvirt/driver.py:1085
+#: nova/virt/libvirt/driver.py:1090
msgid "detaching network adapter failed."
msgstr ""
-#: nova/virt/libvirt/driver.py:1174
+#: nova/virt/libvirt/driver.py:1179
msgid "Beginning live snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1177
+#: nova/virt/libvirt/driver.py:1182
msgid "Beginning cold snapshot process"
msgstr ""
-#: nova/virt/libvirt/driver.py:1206
+#: nova/virt/libvirt/driver.py:1211
msgid "Snapshot extracted, beginning image upload"
msgstr ""
-#: nova/virt/libvirt/driver.py:1218
+#: nova/virt/libvirt/driver.py:1223
msgid "Snapshot image upload complete"
msgstr ""
-#: nova/virt/libvirt/driver.py:1291
+#: nova/virt/libvirt/driver.py:1296
msgid "Instance soft rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1295
+#: nova/virt/libvirt/driver.py:1300
msgid "Failed to soft reboot instance."
msgstr ""
-#: nova/virt/libvirt/driver.py:1330
+#: nova/virt/libvirt/driver.py:1335
msgid "Instance shutdown successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1338
+#: nova/virt/libvirt/driver.py:1343
msgid "Instance may have been rebooted during soft reboot, so return now."
msgstr ""
-#: nova/virt/libvirt/driver.py:1386
+#: nova/virt/libvirt/driver.py:1391
msgid "Instance rebooted successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1531
+#: nova/virt/libvirt/driver.py:1537
msgid "Instance is running"
msgstr ""
-#: nova/virt/libvirt/driver.py:1538 nova/virt/powervm/operator.py:221
+#: nova/virt/libvirt/driver.py:1544 nova/virt/powervm/operator.py:221
msgid "Instance spawned successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:1554
+#: nova/virt/libvirt/driver.py:1560
#, python-format
msgid "data: %(data)r, fpath: %(fpath)r"
msgstr ""
-#: nova/virt/libvirt/driver.py:1591 nova/virt/libvirt/driver.py:1617
+#: nova/virt/libvirt/driver.py:1597 nova/virt/libvirt/driver.py:1623
#, python-format
msgid "Truncated console log returned, %d bytes ignored"
msgstr ""
-#: nova/virt/libvirt/driver.py:1606
+#: nova/virt/libvirt/driver.py:1612
#, fuzzy
msgid "Guest does not have a console available"
msgstr "使用者並沒有管ç†è€…權力"
-#: nova/virt/libvirt/driver.py:1675
+#: nova/virt/libvirt/driver.py:1681
#, python-format
msgid "Path '%(path)s' supports direct I/O"
msgstr ""
-#: nova/virt/libvirt/driver.py:1679
+#: nova/virt/libvirt/driver.py:1685
#, python-format
msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1684 nova/virt/libvirt/driver.py:1689
+#: nova/virt/libvirt/driver.py:1690 nova/virt/libvirt/driver.py:1695
#, python-format
msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'"
msgstr ""
-#: nova/virt/libvirt/driver.py:1760
+#: nova/virt/libvirt/driver.py:1766
msgid "Creating image"
msgstr ""
-#: nova/virt/libvirt/driver.py:1861
+#: nova/virt/libvirt/driver.py:1867
msgid "Using config drive"
msgstr ""
-#: nova/virt/libvirt/driver.py:1910
+#: nova/virt/libvirt/driver.py:1916
#, python-format
msgid "Injecting %(inj)s into image %(img_id)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:1920
+#: nova/virt/libvirt/driver.py:1926
#, python-format
msgid "Error injecting data into image %(img_id)s (%(e)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:1977
+#: nova/virt/libvirt/driver.py:1983
#, python-format
msgid ""
"Config requested an explicit CPU model, but the current libvirt "
"hypervisor '%s' does not support selecting CPU models"
msgstr ""
-#: nova/virt/libvirt/driver.py:1983
+#: nova/virt/libvirt/driver.py:1989
msgid "Config requested a custom CPU model, but no model name was provided"
msgstr ""
-#: nova/virt/libvirt/driver.py:1987
+#: nova/virt/libvirt/driver.py:1993
msgid "A CPU model name should not be set when a host CPU model is requested"
msgstr ""
-#: nova/virt/libvirt/driver.py:1991
+#: nova/virt/libvirt/driver.py:1997
#, python-format
msgid "CPU mode '%(mode)s' model '%(model)s' was chosen"
msgstr ""
-#: nova/virt/libvirt/driver.py:2007
+#: nova/virt/libvirt/driver.py:2013
msgid ""
"Passthrough of the host CPU was requested but this libvirt version does "
"not support this feature"
msgstr ""
-#: nova/virt/libvirt/driver.py:2330
+#: nova/virt/libvirt/driver.py:2337
#, python-format
msgid ""
"Start to_xml instance=%(instance)s network_info=%(network_info)s "
@@ -8426,49 +8471,73 @@ msgid ""
"rescue=%(rescue)sblock_device_info=%(block_device_info)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2345
+#: nova/virt/libvirt/driver.py:2352
#, python-format
msgid "End to_xml instance=%(instance)s xml=%(xml)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2362
+#: nova/virt/libvirt/driver.py:2369
#, python-format
msgid ""
"Error from libvirt while looking up %(instance_name)s: [Error Code "
"%(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2530
+#: nova/virt/libvirt/driver.py:2547 nova/virt/libvirt/driver.py:2551
+#, python-format
+msgid "Invalid range expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2560
+#, python-format
+msgid "Invalid exclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2567
+#, python-format
+msgid "Invalid inclusion expression %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2572
+#, python-format
+msgid "No CPUs available after parsing %r"
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2589
msgid ""
"Cannot get the number of cpu, because this function is not implemented "
"for this platform. "
msgstr ""
-#: nova/virt/libvirt/driver.py:2581
+#: nova/virt/libvirt/driver.py:2599
+msgid "Invalid vcpu_pin_set config, out of hypervisor cpu range."
+msgstr ""
+
+#: nova/virt/libvirt/driver.py:2651
#, python-format
msgid "couldn't obtain the vpu count from domain id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2587
+#: nova/virt/libvirt/driver.py:2657
#, python-format
msgid "List of domains returned by libVirt: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2589
+#: nova/virt/libvirt/driver.py:2659
#, python-format
msgid "libVirt can't find a domain with id: %s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2653
+#: nova/virt/libvirt/driver.py:2723
msgid "libvirt version is too old (does not support getVersion)"
msgstr ""
-#: nova/virt/libvirt/driver.py:2737
+#: nova/virt/libvirt/driver.py:2807
#, fuzzy, python-format
msgid "Trying to get stats for the volume %s"
msgstr "無法å¸è¼‰ Volume %s"
-#: nova/virt/libvirt/driver.py:2750
+#: nova/virt/libvirt/driver.py:2820
#, python-format
msgid ""
"Got volume usage stats for the volume=%(volume)s, instance=%(instance)s, "
@@ -8476,50 +8545,50 @@ msgid ""
"wr_bytes=%(wr_bytes)d"
msgstr ""
-#: nova/virt/libvirt/driver.py:2768
+#: nova/virt/libvirt/driver.py:2838
#, python-format
msgid ""
"Getting block stats failed, device might have been detached. "
"Instance=%(instance_name)s Disk=%(disk)s Code=%(errcode)s Error=%(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:2773
+#: nova/virt/libvirt/driver.py:2843
#, python-format
msgid ""
"Could not find domain in libvirt for instance %s. Cannot get block stats "
"for device"
msgstr ""
-#: nova/virt/libvirt/driver.py:2850
+#: nova/virt/libvirt/driver.py:2920
#, python-format
msgid ""
"Creating tmpfile %s to verify with other compute node that the instance "
"is on the same shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2932
+#: nova/virt/libvirt/driver.py:3002
msgid "Block migration can not be used with shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2940
+#: nova/virt/libvirt/driver.py:3010
msgid "Live migration can not be used without shared storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:2977
+#: nova/virt/libvirt/driver.py:3047
#, python-format
msgid ""
"Unable to migrate %(instance_uuid)s: Disk of instance is too "
"large(available on destination host:%(available)s < need:%(necessary)s)"
msgstr ""
-#: nova/virt/libvirt/driver.py:3002
+#: nova/virt/libvirt/driver.py:3072
#, python-format
msgid ""
"Instance launched has CPU info:\n"
"%s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3014
+#: nova/virt/libvirt/driver.py:3084
#, python-format
msgid ""
"CPU doesn't have compatibility.\n"
@@ -8529,67 +8598,67 @@ msgid ""
"Refer to %(u)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3031
+#: nova/virt/libvirt/driver.py:3101
#, python-format
msgid ""
"Creating tmpfile %s to notify to other compute nodes that they should "
"mount the same storage."
msgstr ""
-#: nova/virt/libvirt/driver.py:3079
+#: nova/virt/libvirt/driver.py:3149
#, python-format
msgid "The firewall filter for %s does not exist"
msgstr ""
-#: nova/virt/libvirt/driver.py:3151
+#: nova/virt/libvirt/driver.py:3221
#, python-format
msgid "Live Migration failure: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3244
+#: nova/virt/libvirt/driver.py:3314
#, python-format
msgid "plug_vifs() failed %(cnt)d. Retry up to %(max_retry)d."
msgstr ""
-#: nova/virt/libvirt/driver.py:3356
+#: nova/virt/libvirt/driver.py:3426
#, python-format
msgid ""
"Error from libvirt while getting description of %(instance_name)s: [Error"
" Code %(error_code)s] %(ex)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3373
+#: nova/virt/libvirt/driver.py:3443
#, python-format
msgid "skipping %(path)s since it looks like volume"
msgstr ""
-#: nova/virt/libvirt/driver.py:3378
+#: nova/virt/libvirt/driver.py:3448
#, python-format
msgid "skipping disk for %(instance_name)s as it does not have a path"
msgstr ""
-#: nova/virt/libvirt/driver.py:3419
+#: nova/virt/libvirt/driver.py:3489
#, python-format
msgid "Getting disk size of %(i_name)s: %(e)s"
msgstr ""
-#: nova/virt/libvirt/driver.py:3465
+#: nova/virt/libvirt/driver.py:3558
msgid "Starting migrate_disk_and_power_off"
msgstr ""
-#: nova/virt/libvirt/driver.py:3524
+#: nova/virt/libvirt/driver.py:3619
msgid "Instance running successfully."
msgstr ""
-#: nova/virt/libvirt/driver.py:3530
+#: nova/virt/libvirt/driver.py:3625
msgid "Starting finish_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3592
+#: nova/virt/libvirt/driver.py:3687
msgid "Starting finish_revert_migration"
msgstr ""
-#: nova/virt/libvirt/driver.py:3713
+#: nova/virt/libvirt/driver.py:3808
#, python-format
msgid "Checking instance files accessability%(instance_path)s"
msgstr ""
@@ -8622,11 +8691,11 @@ msgstr ""
msgid "iptables firewall: Setup Basic Filtering"
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:290
+#: nova/virt/libvirt/imagebackend.py:298
msgid "You should specify libvirt_images_volume_group flag to use LVM images."
msgstr ""
-#: nova/virt/libvirt/imagebackend.py:375
+#: nova/virt/libvirt/imagebackend.py:383
#, python-format
msgid "Unknown image_type=%s"
msgstr ""
@@ -8965,104 +9034,104 @@ msgstr ""
msgid "Cannot mount Scality SOFS, check syslog for errors"
msgstr ""
-#: nova/virt/powervm/blockdev.py:147
+#: nova/virt/powervm/blockdev.py:149
#, fuzzy, python-format
msgid "Removing the logical volume '%s'"
msgstr "找ä¸åˆ°Volume %s"
-#: nova/virt/powervm/blockdev.py:165
+#: nova/virt/powervm/blockdev.py:167
#, python-format
msgid "Fetching image '%s' from glance"
msgstr ""
-#: nova/virt/powervm/blockdev.py:170
+#: nova/virt/powervm/blockdev.py:172
#, python-format
msgid "Using image found at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:172
+#: nova/virt/powervm/blockdev.py:174
#, python-format
msgid "Ensuring image '%s' exists on IVM"
msgstr ""
-#: nova/virt/powervm/blockdev.py:183
+#: nova/virt/powervm/blockdev.py:185
#, fuzzy, python-format
msgid "Creating logical volume of size %s bytes"
msgstr "找ä¸åˆ°Volume %s"
-#: nova/virt/powervm/blockdev.py:186
+#: nova/virt/powervm/blockdev.py:188
#, python-format
msgid "Copying image to the device '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:189
+#: nova/virt/powervm/blockdev.py:191
msgid "Error while creating logical volume from image. Will attempt cleanup."
msgstr ""
-#: nova/virt/powervm/blockdev.py:196
+#: nova/virt/powervm/blockdev.py:198
msgid "Error while attempting cleanup of failed deploy to logical volume."
msgstr ""
-#: nova/virt/powervm/blockdev.py:242
+#: nova/virt/powervm/blockdev.py:244
msgid "Snapshot added to glance."
msgstr ""
-#: nova/virt/powervm/blockdev.py:248
+#: nova/virt/powervm/blockdev.py:250
#, python-format
msgid "Failed to clean up snapshot file %(snapshot_file_path)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:333
+#: nova/virt/powervm/blockdev.py:335
msgid "Could not create logical volume. No space left on any volume group."
msgstr ""
-#: nova/virt/powervm/blockdev.py:424 nova/virt/powervm/blockdev.py:496
+#: nova/virt/powervm/blockdev.py:426 nova/virt/powervm/blockdev.py:498
#, fuzzy
msgid "Unable to get checksum"
msgstr "無法å¸è¼‰ Volume %s"
-#: nova/virt/powervm/blockdev.py:427 nova/virt/powervm/blockdev.py:519
+#: nova/virt/powervm/blockdev.py:429 nova/virt/powervm/blockdev.py:521
msgid "Image checksums do not match"
msgstr ""
-#: nova/virt/powervm/blockdev.py:448
+#: nova/virt/powervm/blockdev.py:450
#, python-format
msgid "Image found on host at '%s'"
msgstr ""
-#: nova/virt/powervm/blockdev.py:456
+#: nova/virt/powervm/blockdev.py:458
msgid "Uncompressed image file not found"
msgstr ""
-#: nova/virt/powervm/blockdev.py:540 nova/virt/powervm/operator.py:673
+#: nova/virt/powervm/blockdev.py:542 nova/virt/powervm/operator.py:675
#, python-format
msgid "Found error stream for command \"%(cmd)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/blockdev.py:557 nova/virt/powervm/operator.py:690
+#: nova/virt/powervm/blockdev.py:559 nova/virt/powervm/operator.py:692
#, python-format
msgid "Found error stream for command \"%(command)s\": %(error_text)s"
msgstr ""
-#: nova/virt/powervm/common.py:61
+#: nova/virt/powervm/common.py:68
msgid "Connection error connecting PowerVM manager"
msgstr ""
-#: nova/virt/powervm/common.py:73
+#: nova/virt/powervm/common.py:101
#, python-format
msgid "Running cmd (SSH-as-root): %s"
msgstr ""
-#: nova/virt/powervm/common.py:122
+#: nova/virt/powervm/common.py:150
msgid "File transfer to PowerVM manager failed"
msgstr ""
-#: nova/virt/powervm/common.py:141
+#: nova/virt/powervm/common.py:169
#, python-format
msgid "ftp GET %(remote_path)s to: %(local_path)s"
msgstr ""
-#: nova/virt/powervm/common.py:147
+#: nova/virt/powervm/common.py:175
#, fuzzy
msgid "File transfer from PowerVM manager failed"
msgstr "連接到glance失敗"
@@ -9278,29 +9347,29 @@ msgstr ""
msgid "Property %(attr)s not set for the managed object %(name)s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:486
+#: nova/virt/vmwareapi/fake.py:492
msgid "There is no VM registered"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:488 nova/virt/vmwareapi/fake.py:663
+#: nova/virt/vmwareapi/fake.py:494 nova/virt/vmwareapi/fake.py:669
#, python-format
msgid "Virtual Machine with ref %s is not there"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:551
+#: nova/virt/vmwareapi/fake.py:557
#, python-format
msgid "Logging out a session that is invalid or already logged out: %s"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:566
+#: nova/virt/vmwareapi/fake.py:572
msgid "Session is faulty"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:569
+#: nova/virt/vmwareapi/fake.py:575
msgid "Session Invalid"
msgstr ""
-#: nova/virt/vmwareapi/fake.py:660
+#: nova/virt/vmwareapi/fake.py:666
msgid "No Virtual Machine has been registered yet"
msgstr ""
@@ -9818,12 +9887,12 @@ msgstr ""
msgid "Unable to find iSCSI Target"
msgstr "找ä¸åˆ°Volume %s"
-#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:60
+#: nova/virt/vmwareapi/volumeops.py:156 nova/virt/xenapi/volumeops.py:57
#, python-format
msgid "Mountpoint %(mountpoint)s attached to instance %(instance_name)s"
msgstr "掛載點 %(mountpoint)s 掛載到虛擬機器 %(instance_name)s"
-#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:104
+#: nova/virt/vmwareapi/volumeops.py:166 nova/virt/xenapi/volumeops.py:128
#, python-format
msgid "Detach_volume: %(instance_name)s, %(mountpoint)s"
msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s"
@@ -9833,24 +9902,24 @@ msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s"
msgid "Unable to find volume"
msgstr "無法å¸è¼‰ Volume %s"
-#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:124
+#: nova/virt/vmwareapi/volumeops.py:187 nova/virt/xenapi/volumeops.py:147
#, python-format
msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s"
msgstr "掛載點 %(mountpoint)s 從虛擬機器 %(instance_name)s å¸è¼‰"
-#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1567
+#: nova/virt/xenapi/agent.py:88 nova/virt/xenapi/vmops.py:1569
#, python-format
msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1571
+#: nova/virt/xenapi/agent.py:92 nova/virt/xenapi/vmops.py:1573
#, python-format
msgid ""
"NOT IMPLEMENTED: The call to %(method)s is not supported by the agent. "
"args=%(args)r"
msgstr ""
-#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1576
+#: nova/virt/xenapi/agent.py:97 nova/virt/xenapi/vmops.py:1578
#, python-format
msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r"
msgstr ""
@@ -9959,19 +10028,19 @@ msgstr ""
msgid "Could not determine key: %s"
msgstr ""
-#: nova/virt/xenapi/driver.py:567
+#: nova/virt/xenapi/driver.py:570
msgid "Host startup on XenServer is not supported."
msgstr ""
-#: nova/virt/xenapi/driver.py:627
+#: nova/virt/xenapi/driver.py:630
msgid "Unable to log in to XenAPI (is the Dom0 disk full?)"
msgstr ""
-#: nova/virt/xenapi/driver.py:667
+#: nova/virt/xenapi/driver.py:670
msgid "Host is member of a pool, but DB says otherwise"
msgstr ""
-#: nova/virt/xenapi/driver.py:751 nova/virt/xenapi/driver.py:765
+#: nova/virt/xenapi/driver.py:754 nova/virt/xenapi/driver.py:768
#, python-format
msgid "Got exception: %s"
msgstr ""
@@ -10247,235 +10316,235 @@ msgstr ""
msgid "Asking xapi to fetch vhd image %(image_id)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1169
+#: nova/virt/xenapi/vm_utils.py:1186
#, python-format
msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1184
+#: nova/virt/xenapi/vm_utils.py:1201
#, python-format
msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1188
+#: nova/virt/xenapi/vm_utils.py:1205
#, python-format
msgid ""
"Image size %(size_bytes)d exceeded instance_type allowed size "
"%(allowed_size_bytes)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1210
+#: nova/virt/xenapi/vm_utils.py:1227
#, python-format
msgid "Fetching image %(image_id)s, type %(image_type_str)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1223
+#: nova/virt/xenapi/vm_utils.py:1240
#, python-format
msgid "Size for image %(image_id)s: %(virtual_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1232
+#: nova/virt/xenapi/vm_utils.py:1249
#, python-format
msgid ""
"Kernel/Ramdisk image is too large: %(vdi_size)d bytes, max %(max_size)d "
"bytes"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1251
+#: nova/virt/xenapi/vm_utils.py:1268
#, python-format
msgid "Copying VDI %s to /boot/guest on dom0"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1265
+#: nova/virt/xenapi/vm_utils.py:1282
#, python-format
msgid "Kernel/Ramdisk VDI %s destroyed"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1274
+#: nova/virt/xenapi/vm_utils.py:1291
msgid "Failed to fetch glance image"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1315
+#: nova/virt/xenapi/vm_utils.py:1332
#, python-format
msgid "Detected %(image_type_str)s format for image %(image_ref)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1346
+#: nova/virt/xenapi/vm_utils.py:1363
#, python-format
msgid "Looking up vdi %s for PV kernel"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1364
+#: nova/virt/xenapi/vm_utils.py:1381
#, python-format
msgid ""
"Image format is None: trying to determine PV status using pygrub; if "
"instance with vdi %s does not boot correctly, try with image metadata."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1370
+#: nova/virt/xenapi/vm_utils.py:1387
#, python-format
msgid "Unknown image format %(disk_image_type)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1401
+#: nova/virt/xenapi/vm_utils.py:1418
#, python-format
msgid "VDI %s is still available"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1504
+#: nova/virt/xenapi/vm_utils.py:1521
#, python-format
msgid "Unable to parse rrd of %(vm_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1531
+#: nova/virt/xenapi/vm_utils.py:1548
#, python-format
msgid "Re-scanning SR %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1559
+#: nova/virt/xenapi/vm_utils.py:1576
#, python-format
msgid "Flag sr_matching_filter '%s' does not respect formatting convention"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1577
+#: nova/virt/xenapi/vm_utils.py:1594
msgid ""
"XenAPI is unable to find a Storage Repository to install guest instances "
"on. Please check your configuration and/or configure the flag "
"'sr_matching_filter'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1590
+#: nova/virt/xenapi/vm_utils.py:1607
msgid "Cannot find SR of content-type ISO"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1598
+#: nova/virt/xenapi/vm_utils.py:1615
#, python-format
msgid "ISO: looking at SR %(sr_rec)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1600
+#: nova/virt/xenapi/vm_utils.py:1617
msgid "ISO: not iso content"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1603
+#: nova/virt/xenapi/vm_utils.py:1620
msgid "ISO: iso content_type, no 'i18n-key' key"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1606
+#: nova/virt/xenapi/vm_utils.py:1623
msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1610
+#: nova/virt/xenapi/vm_utils.py:1627
msgid "ISO: SR MATCHing our criteria"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1612
+#: nova/virt/xenapi/vm_utils.py:1629
msgid "ISO: ISO, looking to see if it is host local"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1615
+#: nova/virt/xenapi/vm_utils.py:1632
#, python-format
msgid "ISO: PBD %(pbd_ref)s disappeared"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1618
+#: nova/virt/xenapi/vm_utils.py:1635
#, python-format
msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1621
+#: nova/virt/xenapi/vm_utils.py:1638
msgid "ISO: SR with local PBD"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1643
+#: nova/virt/xenapi/vm_utils.py:1660
#, python-format
msgid ""
"Unable to obtain RRD XML for VM %(vm_uuid)s with server details: "
"%(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1659
+#: nova/virt/xenapi/vm_utils.py:1676
#, python-format
msgid "Unable to obtain RRD XML updates with server details: %(server)s."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1713
+#: nova/virt/xenapi/vm_utils.py:1730
#, python-format
msgid "Invalid statistics data from Xenserver: %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1773
+#: nova/virt/xenapi/vm_utils.py:1790
#, python-format
msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1860
+#: nova/virt/xenapi/vm_utils.py:1877
#, python-format
msgid ""
"Parent %(parent_uuid)s doesn't match original parent "
"%(original_parent_uuid)s, waiting for coalesce..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1870
+#: nova/virt/xenapi/vm_utils.py:1887
#, python-format
msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1905
+#: nova/virt/xenapi/vm_utils.py:1922
#, python-format
msgid "Timeout waiting for device %s to be created"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1925
+#: nova/virt/xenapi/vm_utils.py:1942
#, python-format
msgid "Disconnecting stale VDI %s from compute domU"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1938
+#: nova/virt/xenapi/vm_utils.py:1955
#, python-format
msgid "Plugging VBD %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1941
+#: nova/virt/xenapi/vm_utils.py:1958
#, python-format
msgid "Plugging VBD %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1943
+#: nova/virt/xenapi/vm_utils.py:1960
#, python-format
msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1946
+#: nova/virt/xenapi/vm_utils.py:1963
#, python-format
msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1951
+#: nova/virt/xenapi/vm_utils.py:1968
#, python-format
msgid "Destroying VBD for VDI %s ... "
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1959
+#: nova/virt/xenapi/vm_utils.py:1976
#, python-format
msgid "Destroying VBD for VDI %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1986
+#: nova/virt/xenapi/vm_utils.py:2003
#, python-format
msgid "Running pygrub against %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1994
+#: nova/virt/xenapi/vm_utils.py:2011
#, python-format
msgid "Found Xen kernel %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1996
+#: nova/virt/xenapi/vm_utils.py:2013
msgid "No Xen kernel found. Booting HVM."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:1998
+#: nova/virt/xenapi/vm_utils.py:2015
msgid ""
"Error while executing pygrub! Please, ensure the binary is installed "
"correctly, and available in your PATH; on some Linux distros, pygrub may "
@@ -10483,51 +10552,51 @@ msgid ""
"mode."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2015
+#: nova/virt/xenapi/vm_utils.py:2032
msgid "Partitions:"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2021
+#: nova/virt/xenapi/vm_utils.py:2038
#, python-format
msgid " %(num)s: %(ptype)s %(size)d sectors"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2046
+#: nova/virt/xenapi/vm_utils.py:2063
#, python-format
msgid ""
"Writing partition table %(primary_first)d %(primary_last)d to "
"%(dev_path)s..."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2059
+#: nova/virt/xenapi/vm_utils.py:2076
#, python-format
msgid "Writing partition table %s done."
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2113
+#: nova/virt/xenapi/vm_utils.py:2130
#, python-format
msgid ""
"Starting sparse_copy src=%(src_path)s dst=%(dst_path)s "
"virtual_size=%(virtual_size)d block_size=%(block_size)d"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2146
+#: nova/virt/xenapi/vm_utils.py:2163
#, python-format
msgid ""
"Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% "
"reduction in size"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2198
+#: nova/virt/xenapi/vm_utils.py:2215
msgid "Manipulating interface files directly"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2207
+#: nova/virt/xenapi/vm_utils.py:2224
#, python-format
msgid "Failed to mount filesystem (expected for non-linux instances): %s"
msgstr ""
-#: nova/virt/xenapi/vm_utils.py:2319
+#: nova/virt/xenapi/vm_utils.py:2336
msgid "This domU must be running on the host specified by xenapi_connection_url"
msgstr ""
@@ -10708,26 +10777,30 @@ msgstr ""
msgid "Injecting hostname to xenstore"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1626
+#: nova/virt/xenapi/vmops.py:1628
#, python-format
msgid ""
"Destination host:%(hostname)s must be in the same aggregate as the source"
" server"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1647
+#: nova/virt/xenapi/vmops.py:1649
msgid "No suitable network for migrate"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1659
+#: nova/virt/xenapi/vmops.py:1661
msgid "Migrate Receive failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1708
+#: nova/virt/xenapi/vmops.py:1735
+msgid "XAPI supporting relax-xsm-sr-check=true requried"
+msgstr ""
+
+#: nova/virt/xenapi/vmops.py:1746
msgid "VM.assert_can_migrate failed"
msgstr ""
-#: nova/virt/xenapi/vmops.py:1745
+#: nova/virt/xenapi/vmops.py:1799
msgid "Migrate Send failed"
msgstr ""
@@ -10797,7 +10870,12 @@ msgstr ""
msgid "Unable to obtain target information %(connection_data)s"
msgstr ""
-#: nova/virt/xenapi/volumeops.py:116
+#: nova/virt/xenapi/volumeops.py:70
+#, fuzzy, python-format
+msgid "Connect_volume: %(connection_info)s"
+msgstr "å¸è¼‰_Volume: %(instance_name)s, %(mountpoint)s"
+
+#: nova/virt/xenapi/volumeops.py:139
#, python-format
msgid "Skipping detach because VBD for %(instance_name)s was not found"
msgstr ""
@@ -10863,70 +10941,3 @@ msgstr ""
msgid "status must be 'available'"
msgstr ""
-#~ msgid "Unexpected error while running command."
-#~ msgstr "éžé æœŸçš„執行錯誤"
-
-#~ msgid ""
-#~ "%(description)s\n"
-#~ "Command: %(cmd)s\n"
-#~ "Exit code: %(exit_code)s\n"
-#~ "Stdout: %(stdout)r\n"
-#~ "Stderr: %(stderr)r"
-#~ msgstr ""
-#~ "%(description)s\n"
-#~ "命令: %(cmd)s\n"
-#~ "退出代碼: %(exit_code)s\n"
-#~ "標準輸出: %(stdout)r\n"
-#~ "標準錯誤輸出: %(stderr)r"
-
-#~ msgid "Error clearing stale veth %s"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged VLAN interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged bridge interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Failed unplugging gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Unplugged gateway interface '%s'"
-#~ msgstr ""
-
-#~ msgid "Network %(net)s for port %(port_id)s not found!"
-#~ msgstr ""
-
-#~ msgid "Host filter ignoring hosts: %(ignored_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "No hosts matched due to not "
-#~ "matching 'force_hosts'value of "
-#~ "'%(forced_hosts_str)s'"
-#~ msgstr ""
-
-#~ msgid "Host filter forcing available hosts to %(forced_hosts_str)s"
-#~ msgstr ""
-
-#~ msgid ""
-#~ "Getting block stats failed, device might"
-#~ " have been detached. Code=%(errcode)s "
-#~ "Error=%(e)s"
-#~ msgstr ""
-
-#~ msgid "Must specify vmwareapi_wsdl_loc"
-#~ msgstr ""
-
-#~ msgid "Unable to get SR for this host: %s"
-#~ msgstr ""
-
-#~ msgid "VM.assert_can_migratefailed"
-#~ msgstr ""
-
diff --git a/nova/network/api.py b/nova/network/api.py
index b8baf9810..26bf03446 100644
--- a/nova/network/api.py
+++ b/nova/network/api.py
@@ -21,7 +21,7 @@
import functools
import inspect
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.db import base
from nova import exception
from nova.network import floating_ips
@@ -266,7 +266,7 @@ class API(base.Base):
# this is called from compute.manager which shouldn't
# have db access so we do it on the other side of the
# rpc.
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = {}
args['vpn'] = vpn
args['requested_networks'] = requested_networks
@@ -316,7 +316,7 @@ class API(base.Base):
def add_fixed_ip_to_instance(self, context, instance, network_id,
conductor_api=None):
"""Adds a fixed ip to instance from specified network."""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = {'instance_id': instance['uuid'],
'rxtx_factor': instance_type['rxtx_factor'],
'host': instance['host'],
@@ -329,7 +329,7 @@ class API(base.Base):
conductor_api=None):
"""Removes a fixed ip from instance from specified network."""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = {'instance_id': instance['uuid'],
'rxtx_factor': instance_type['rxtx_factor'],
'host': instance['host'],
@@ -346,7 +346,6 @@ class API(base.Base):
def associate(self, context, network_uuid, host=_sentinel,
project=_sentinel):
"""Associate or disassociate host or project to network."""
- associations = {}
network_id = self.get(context, network_uuid)['id']
if host is not API._sentinel:
if host is None:
@@ -356,7 +355,6 @@ class API(base.Base):
else:
self.db.network_set_host(context, network_id, host)
if project is not API._sentinel:
- project = associations['project']
if project is None:
self.db.network_disassociate(context, network_id,
disassociate_host=False,
@@ -374,7 +372,7 @@ class API(base.Base):
def _get_instance_nw_info(self, context, instance):
"""Returns all network info related to an instance."""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = {'instance_id': instance['uuid'],
'rxtx_factor': instance_type['rxtx_factor'],
'host': instance['host'],
@@ -486,12 +484,12 @@ class API(base.Base):
def _get_floating_ip_addresses(self, context, instance):
floating_ips = self.db.instance_floating_address_get_all(context,
instance['uuid'])
- return [floating_ip['address'] for floating_ip in floating_ips]
+ return floating_ips
@wrap_check_policy
def migrate_instance_start(self, context, instance, migration):
"""Start to migrate the network of an instance."""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = dict(
instance_uuid=instance['uuid'],
rxtx_factor=instance_type['rxtx_factor'],
@@ -511,7 +509,7 @@ class API(base.Base):
@wrap_check_policy
def migrate_instance_finish(self, context, instance, migration):
"""Finish migrating the network of an instance."""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
args = dict(
instance_uuid=instance['uuid'],
rxtx_factor=instance_type['rxtx_factor'],
diff --git a/nova/network/floating_ips.py b/nova/network/floating_ips.py
index 8ba153358..429d6fc69 100644
--- a/nova/network/floating_ips.py
+++ b/nova/network/floating_ips.py
@@ -25,7 +25,6 @@ from nova import exception
from nova.network import rpcapi as network_rpcapi
from nova.openstack.common import excutils
from nova.openstack.common import importutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common.notifier import api as notifier
from nova.openstack.common import processutils
@@ -33,6 +32,7 @@ from nova.openstack.common.rpc import common as rpc_common
from nova.openstack.common import uuidutils
from nova import quota
from nova import servicegroup
+from nova import utils
LOG = logging.getLogger(__name__)
@@ -354,7 +354,7 @@ class FloatingIP(object):
"""Performs db and driver calls to associate floating ip & fixed ip."""
interface = CONF.public_interface or interface
- @lockutils.synchronized(unicode(floating_address), 'nova-')
+ @utils.synchronized(unicode(floating_address))
def do_associate():
# associate floating ip
fixed = self.db.floating_ip_fixed_ip_associate(context,
@@ -373,6 +373,7 @@ class FloatingIP(object):
if "Cannot find device" in str(e):
LOG.error(_('Interface %(interface)s not found'), locals())
raise exception.NoFloatingIpInterface(interface=interface)
+ raise
payload = dict(project_id=context.project_id,
instance_id=instance_uuid,
@@ -442,7 +443,7 @@ class FloatingIP(object):
"""Performs db and driver calls to disassociate floating ip."""
interface = CONF.public_interface or interface
- @lockutils.synchronized(unicode(address), 'nova-')
+ @utils.synchronized(unicode(address))
def do_disassociate():
# NOTE(vish): Note that we are disassociating in the db before we
# actually remove the ip address on the host. We are
diff --git a/nova/network/linux_net.py b/nova/network/linux_net.py
index 7a1f562e5..cb86f7fa0 100644
--- a/nova/network/linux_net.py
+++ b/nova/network/linux_net.py
@@ -33,7 +33,6 @@ from nova.openstack.common import excutils
from nova.openstack.common import fileutils
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common import timeutils
@@ -397,7 +396,7 @@ class IptablesManager(object):
self._apply()
- @lockutils.synchronized('iptables', 'nova-', external=True)
+ @utils.synchronized('iptables', external=True)
def _apply(self):
"""Apply the current in-memory set of iptables rules.
@@ -980,7 +979,7 @@ def kill_dhcp(dev):
# NOTE(ja): Sending a HUP only reloads the hostfile, so any
# configuration options (like dchp-range, vlan, ...)
# aren't reloaded.
-@lockutils.synchronized('dnsmasq_start', 'nova-')
+@utils.synchronized('dnsmasq_start')
def restart_dhcp(context, dev, network_ref):
"""(Re)starts a dnsmasq server for a given network.
@@ -1068,7 +1067,7 @@ def restart_dhcp(context, dev, network_ref):
_add_dnsmasq_accept_rules(dev)
-@lockutils.synchronized('radvd_start', 'nova-')
+@utils.synchronized('radvd_start')
def update_ra(context, dev, network_ref):
conffile = _ra_file(dev, 'conf')
conf_str = """
@@ -1393,7 +1392,7 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
LinuxBridgeInterfaceDriver.remove_vlan(vlan_num)
@classmethod
- @lockutils.synchronized('lock_vlan', 'nova-', external=True)
+ @utils.synchronized('lock_vlan', external=True)
def ensure_vlan(_self, vlan_num, bridge_interface, mac_address=None):
"""Create a vlan unless it already exists."""
interface = 'vlan%s' % vlan_num
@@ -1418,14 +1417,14 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
return interface
@classmethod
- @lockutils.synchronized('lock_vlan', 'nova-', external=True)
+ @utils.synchronized('lock_vlan', external=True)
def remove_vlan(cls, vlan_num):
"""Delete a vlan."""
vlan_interface = 'vlan%s' % vlan_num
delete_net_dev(vlan_interface)
@classmethod
- @lockutils.synchronized('lock_bridge', 'nova-', external=True)
+ @utils.synchronized('lock_bridge', external=True)
def ensure_bridge(_self, bridge, interface, net_attrs=None, gateway=True,
filtering=True):
"""Create a bridge unless it already exists.
@@ -1510,7 +1509,7 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
% (bridge, CONF.iptables_drop_action)))
@classmethod
- @lockutils.synchronized('lock_bridge', 'nova-', external=True)
+ @utils.synchronized('lock_bridge', external=True)
def remove_bridge(cls, bridge, gateway=True, filtering=True):
"""Delete a bridge."""
if not device_exists(bridge):
@@ -1536,7 +1535,7 @@ class LinuxBridgeInterfaceDriver(LinuxNetInterfaceDriver):
delete_net_dev(bridge)
-@lockutils.synchronized('ebtables', 'nova-', external=True)
+@utils.synchronized('ebtables', external=True)
def ensure_ebtables_rules(rules, table='filter'):
for rule in rules:
cmd = ['ebtables', '-t', table, '-D'] + rule.split()
@@ -1545,7 +1544,7 @@ def ensure_ebtables_rules(rules, table='filter'):
_execute(*cmd, run_as_root=True)
-@lockutils.synchronized('ebtables', 'nova-', external=True)
+@utils.synchronized('ebtables', external=True)
def remove_ebtables_rules(rules, table='filter'):
for rule in rules:
cmd = ['ebtables', '-t', table, '-D'] + rule.split()
diff --git a/nova/network/manager.py b/nova/network/manager.py
index 54c079245..5d58edb97 100644
--- a/nova/network/manager.py
+++ b/nova/network/manager.py
@@ -66,10 +66,10 @@ from nova.network.security_group import openstack_driver
from nova.openstack.common import excutils
from nova.openstack.common import importutils
from nova.openstack.common import jsonutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import periodic_task
from nova.openstack.common.rpc import common as rpc_common
+from nova.openstack.common import strutils
from nova.openstack.common import timeutils
from nova.openstack.common import uuidutils
from nova import quota
@@ -313,7 +313,7 @@ class NetworkManager(manager.Manager):
def _import_ipam_lib(self, ipam_lib):
self.ipam = importutils.import_module(ipam_lib).get_ipam_lib(self)
- @lockutils.synchronized('get_dhcp', 'nova-')
+ @utils.synchronized('get_dhcp')
def _get_dhcp_ip(self, context, network_ref, host=None):
"""Get the proper dhcp address to listen on."""
# NOTE(vish): this is for compatibility
@@ -1030,10 +1030,11 @@ class NetworkManager(manager.Manager):
else:
kwargs["network_size"] = CONF.network_size
- kwargs["multi_host"] = (CONF.multi_host
- if kwargs["multi_host"] is None
- else
- utils.bool_from_str(kwargs["multi_host"]))
+ kwargs["multi_host"] = (
+ CONF.multi_host
+ if kwargs["multi_host"] is None
+ else strutils.bool_from_string(kwargs["multi_host"]))
+
kwargs["vlan_start"] = kwargs.get("vlan_start") or CONF.vlan_start
kwargs["vpn_start"] = kwargs.get("vpn_start") or CONF.vpn_start
kwargs["dns1"] = kwargs["dns1"] or CONF.flat_network_dns
@@ -1807,7 +1808,7 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
return NetworkManager.create_networks(
self, context, vpn=True, **kwargs)
- @lockutils.synchronized('setup_network', 'nova-', external=True)
+ @utils.synchronized('setup_network', external=True)
def _setup_network_on_host(self, context, network):
"""Sets up network on this host."""
if not network['vpn_public_address']:
@@ -1841,7 +1842,7 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
self.db.network_update(context, network['id'],
{'gateway_v6': gateway})
- @lockutils.synchronized('setup_network', 'nova-', external=True)
+ @utils.synchronized('setup_network', external=True)
def _teardown_network_on_host(self, context, network):
if not CONF.fake_network:
network['dhcp_server'] = self._get_dhcp_ip(context, network)
@@ -1867,7 +1868,7 @@ class VlanManager(RPCAllocateFixedIP, floating_ips.FloatingIP, NetworkManager):
self.db.fixed_ip_update(context, network['dhcp_server'],
values)
else:
- self.driver.update_dhcp(context, dev, network)
+ self.driver.update_dhcp(elevated, dev, network)
def _get_network_dict(self, network):
"""Returns the dict representing necessary and meta network fields."""
diff --git a/nova/network/quantumv2/api.py b/nova/network/quantumv2/api.py
index 688918739..8da43a3d8 100644
--- a/nova/network/quantumv2/api.py
+++ b/nova/network/quantumv2/api.py
@@ -20,7 +20,7 @@ import time
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import conductor
from nova import context
from nova.db import base
@@ -309,7 +309,7 @@ class API(base.Base):
"""
self._refresh_quantum_extensions_cache()
if 'nvp-qos' in self.extensions:
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
rxtx_factor = instance_type.get('rxtx_factor')
port_req_body['port']['rxtx_factor'] = rxtx_factor
diff --git a/nova/notifications.py b/nova/notifications.py
index ecd708d60..4442d9904 100644
--- a/nova/notifications.py
+++ b/nova/notifications.py
@@ -21,7 +21,7 @@ the system.
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
import nova.context
from nova import db
from nova.image import glance
@@ -284,7 +284,7 @@ def info_from_instance(context, instance_ref, network_info,
image_ref_url = glance.generate_image_url(instance_ref['image_ref'])
- instance_type = instance_types.extract_instance_type(instance_ref)
+ instance_type = flavors.extract_instance_type(instance_ref)
instance_type_name = instance_type.get('name', '')
if system_metadata is None:
diff --git a/nova/openstack/common/lockutils.py b/nova/openstack/common/lockutils.py
index 672e7ad7d..e8b5af78b 100644
--- a/nova/openstack/common/lockutils.py
+++ b/nova/openstack/common/lockutils.py
@@ -49,6 +49,10 @@ CONF = cfg.CONF
CONF.register_opts(util_opts)
+def set_defaults(lock_path):
+ cfg.set_defaults(util_opts, lock_path=lock_path)
+
+
class _InterProcessLock(object):
"""Lock implementation which allows multiple locks, working around
issues like bugs.debian.org/cgi-bin/bugreport.cgi?bug=632857 and does
@@ -247,3 +251,28 @@ def synchronized(name, lock_file_prefix, external=False, lock_path=None):
return retval
return inner
return wrap
+
+
+def synchronized_with_prefix(lock_file_prefix):
+ """Partial object generator for the synchronization decorator.
+
+ Redefine @synchronized in each project like so::
+
+ (in nova/utils.py)
+ from nova.openstack.common import lockutils
+
+ synchronized = lockutils.synchronized_with_prefix('nova-')
+
+
+ (in nova/foo.py)
+ from nova import utils
+
+ @utils.synchronized('mylock')
+ def bar(self, *args):
+ ...
+
+ The lock_file_prefix argument is used to provide lock files on disk with a
+ meaningful prefix. The prefix should end with a hyphen ('-') if specified.
+ """
+
+ return functools.partial(synchronized, lock_file_prefix=lock_file_prefix)
diff --git a/nova/openstack/common/processutils.py b/nova/openstack/common/processutils.py
index 45a5bf963..6474db4ad 100644
--- a/nova/openstack/common/processutils.py
+++ b/nova/openstack/common/processutils.py
@@ -34,6 +34,11 @@ from nova.openstack.common import log as logging
LOG = logging.getLogger(__name__)
+class InvalidArgumentError(Exception):
+ def __init__(self, message=None):
+ super(InvalidArgumentError, self).__init__(message)
+
+
class UnknownArgumentError(Exception):
def __init__(self, message=None):
super(UnknownArgumentError, self).__init__(message)
@@ -179,3 +184,64 @@ def execute(*cmd, **kwargs):
# call clean something up in between calls, without
# it two execute calls in a row hangs the second one
greenthread.sleep(0)
+
+
+def trycmd(*args, **kwargs):
+ """
+ A wrapper around execute() to more easily handle warnings and errors.
+
+ Returns an (out, err) tuple of strings containing the output of
+ the command's stdout and stderr. If 'err' is not empty then the
+ command can be considered to have failed.
+
+ :discard_warnings True | False. Defaults to False. If set to True,
+ then for succeeding commands, stderr is cleared
+
+ """
+ discard_warnings = kwargs.pop('discard_warnings', False)
+
+ try:
+ out, err = execute(*args, **kwargs)
+ failed = False
+ except ProcessExecutionError, exn:
+ out, err = '', str(exn)
+ failed = True
+
+ if not failed and discard_warnings and err:
+ # Handle commands that output to stderr but otherwise succeed
+ err = ''
+
+ return out, err
+
+
+def ssh_execute(ssh, cmd, process_input=None,
+ addl_env=None, check_exit_code=True):
+ LOG.debug(_('Running cmd (SSH): %s'), cmd)
+ if addl_env:
+ raise InvalidArgumentError(_('Environment not supported over SSH'))
+
+ if process_input:
+ # This is (probably) fixable if we need it...
+ raise InvalidArgumentError(_('process_input not supported over SSH'))
+
+ stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd)
+ channel = stdout_stream.channel
+
+ # NOTE(justinsb): This seems suspicious...
+ # ...other SSH clients have buffering issues with this approach
+ stdout = stdout_stream.read()
+ stderr = stderr_stream.read()
+ stdin_stream.close()
+
+ exit_status = channel.recv_exit_status()
+
+ # exit_status == -1 if no exit code was returned
+ if exit_status != -1:
+ LOG.debug(_('Result was %s') % exit_status)
+ if check_exit_code and exit_status != 0:
+ raise ProcessExecutionError(exit_code=exit_status,
+ stdout=stdout,
+ stderr=stderr,
+ cmd=cmd)
+
+ return (stdout, stderr)
diff --git a/nova/cmd/rootwrap.py b/nova/openstack/common/rootwrap/cmd.py
index 0b7d0064f..36d87d4db 100644..100755
--- a/nova/cmd/rootwrap.py
+++ b/nova/openstack/common/rootwrap/cmd.py
@@ -33,6 +33,8 @@
they are needed, to avoid allowing more than is necessary.
"""
+from __future__ import print_function
+
import ConfigParser
import logging
import os
@@ -55,10 +57,10 @@ def _subprocess_setup():
def _exit_error(execname, message, errorcode, log=True):
- print "%s: %s" % (execname, message)
+ print("%s: %s" % (execname, message))
if log:
logging.error(message)
- return(errorcode)
+ sys.exit(errorcode)
def main():
@@ -115,7 +117,7 @@ def main():
preexec_fn=_subprocess_setup,
env=filtermatch.get_environment(userargs))
obj.wait()
- return(obj.returncode)
+ sys.exit(obj.returncode)
except wrapper.FilterMatchNotExecutable as exc:
msg = ("Executable not found: %s (filter match = %s)"
diff --git a/nova/openstack/common/setup.py b/nova/openstack/common/setup.py
deleted file mode 100644
index 03b06757a..000000000
--- a/nova/openstack/common/setup.py
+++ /dev/null
@@ -1,369 +0,0 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2011 OpenStack Foundation.
-# Copyright 2012-2013 Hewlett-Packard Development Company, L.P.
-# All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-
-"""
-Utilities with minimum-depends for use in setup.py
-"""
-
-from __future__ import print_function
-
-import email
-import os
-import re
-import subprocess
-import sys
-
-from setuptools.command import sdist
-
-
-def parse_mailmap(mailmap='.mailmap'):
- mapping = {}
- if os.path.exists(mailmap):
- with open(mailmap, 'r') as fp:
- for l in fp:
- try:
- canonical_email, alias = re.match(
- r'[^#]*?(<.+>).*(<.+>).*', l).groups()
- except AttributeError:
- continue
- mapping[alias] = canonical_email
- return mapping
-
-
-def _parse_git_mailmap(git_dir, mailmap='.mailmap'):
- mailmap = os.path.join(os.path.dirname(git_dir), mailmap)
- return parse_mailmap(mailmap)
-
-
-def canonicalize_emails(changelog, mapping):
- """Takes in a string and an email alias mapping and replaces all
- instances of the aliases in the string with their real email.
- """
- for alias, email_address in mapping.iteritems():
- changelog = changelog.replace(alias, email_address)
- return changelog
-
-
-# Get requirements from the first file that exists
-def get_reqs_from_files(requirements_files):
- for requirements_file in requirements_files:
- if os.path.exists(requirements_file):
- with open(requirements_file, 'r') as fil:
- return fil.read().split('\n')
- return []
-
-
-def parse_requirements(requirements_files=['requirements.txt',
- 'tools/pip-requires']):
- requirements = []
- for line in get_reqs_from_files(requirements_files):
- # For the requirements list, we need to inject only the portion
- # after egg= so that distutils knows the package it's looking for
- # such as:
- # -e git://github.com/openstack/nova/master#egg=nova
- if re.match(r'\s*-e\s+', line):
- requirements.append(re.sub(r'\s*-e\s+.*#egg=(.*)$', r'\1',
- line))
- # such as:
- # http://github.com/openstack/nova/zipball/master#egg=nova
- elif re.match(r'\s*https?:', line):
- requirements.append(re.sub(r'\s*https?:.*#egg=(.*)$', r'\1',
- line))
- # -f lines are for index locations, and don't get used here
- elif re.match(r'\s*-f\s+', line):
- pass
- # argparse is part of the standard library starting with 2.7
- # adding it to the requirements list screws distro installs
- elif line == 'argparse' and sys.version_info >= (2, 7):
- pass
- else:
- requirements.append(line)
-
- return requirements
-
-
-def parse_dependency_links(requirements_files=['requirements.txt',
- 'tools/pip-requires']):
- dependency_links = []
- # dependency_links inject alternate locations to find packages listed
- # in requirements
- for line in get_reqs_from_files(requirements_files):
- # skip comments and blank lines
- if re.match(r'(\s*#)|(\s*$)', line):
- continue
- # lines with -e or -f need the whole line, minus the flag
- if re.match(r'\s*-[ef]\s+', line):
- dependency_links.append(re.sub(r'\s*-[ef]\s+', '', line))
- # lines that are only urls can go in unmolested
- elif re.match(r'\s*https?:', line):
- dependency_links.append(line)
- return dependency_links
-
-
-def _run_shell_command(cmd, throw_on_error=False):
- if os.name == 'nt':
- output = subprocess.Popen(["cmd.exe", "/C", cmd],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- else:
- output = subprocess.Popen(["/bin/sh", "-c", cmd],
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- out = output.communicate()
- if output.returncode and throw_on_error:
- raise Exception("%s returned %d" % cmd, output.returncode)
- if len(out) == 0:
- return None
- if len(out[0].strip()) == 0:
- return None
- return out[0].strip()
-
-
-def _get_git_directory():
- parent_dir = os.path.dirname(__file__)
- while True:
- git_dir = os.path.join(parent_dir, '.git')
- if os.path.exists(git_dir):
- return git_dir
- parent_dir, child = os.path.split(parent_dir)
- if not child: # reached to root dir
- return None
-
-
-def write_git_changelog():
- """Write a changelog based on the git changelog."""
- new_changelog = 'ChangeLog'
- git_dir = _get_git_directory()
- if not os.getenv('SKIP_WRITE_GIT_CHANGELOG'):
- if git_dir:
- git_log_cmd = 'git --git-dir=%s log' % git_dir
- changelog = _run_shell_command(git_log_cmd)
- mailmap = _parse_git_mailmap(git_dir)
- with open(new_changelog, "w") as changelog_file:
- changelog_file.write(canonicalize_emails(changelog, mailmap))
- else:
- open(new_changelog, 'w').close()
-
-
-def generate_authors():
- """Create AUTHORS file using git commits."""
- jenkins_email = 'jenkins@review.(openstack|stackforge).org'
- old_authors = 'AUTHORS.in'
- new_authors = 'AUTHORS'
- git_dir = _get_git_directory()
- if not os.getenv('SKIP_GENERATE_AUTHORS'):
- if git_dir:
- # don't include jenkins email address in AUTHORS file
- git_log_cmd = ("git --git-dir=" + git_dir +
- " log --format='%aN <%aE>' | sort -u | "
- "egrep -v '" + jenkins_email + "'")
- changelog = _run_shell_command(git_log_cmd)
- signed_cmd = ("git --git-dir=" + git_dir +
- " log | grep -i Co-authored-by: | sort -u")
- signed_entries = _run_shell_command(signed_cmd)
- if signed_entries:
- new_entries = "\n".join(
- [signed.split(":", 1)[1].strip()
- for signed in signed_entries.split("\n") if signed])
- changelog = "\n".join((changelog, new_entries))
- mailmap = _parse_git_mailmap(git_dir)
- with open(new_authors, 'w') as new_authors_fh:
- new_authors_fh.write(canonicalize_emails(changelog, mailmap))
- if os.path.exists(old_authors):
- with open(old_authors, "r") as old_authors_fh:
- new_authors_fh.write('\n' + old_authors_fh.read())
- else:
- open(new_authors, 'w').close()
-
-
-_rst_template = """%(heading)s
-%(underline)s
-
-.. automodule:: %(module)s
- :members:
- :undoc-members:
- :show-inheritance:
-"""
-
-
-def get_cmdclass():
- """Return dict of commands to run from setup.py."""
-
- cmdclass = dict()
-
- def _find_modules(arg, dirname, files):
- for filename in files:
- if filename.endswith('.py') and filename != '__init__.py':
- arg["%s.%s" % (dirname.replace('/', '.'),
- filename[:-3])] = True
-
- class LocalSDist(sdist.sdist):
- """Builds the ChangeLog and Authors files from VC first."""
-
- def run(self):
- write_git_changelog()
- generate_authors()
- # sdist.sdist is an old style class, can't use super()
- sdist.sdist.run(self)
-
- cmdclass['sdist'] = LocalSDist
-
- # If Sphinx is installed on the box running setup.py,
- # enable setup.py to build the documentation, otherwise,
- # just ignore it
- try:
- from sphinx.setup_command import BuildDoc
-
- class LocalBuildDoc(BuildDoc):
-
- builders = ['html', 'man']
-
- def generate_autoindex(self):
- print("**Autodocumenting from %s" % os.path.abspath(os.curdir))
- modules = {}
- option_dict = self.distribution.get_option_dict('build_sphinx')
- source_dir = os.path.join(option_dict['source_dir'][1], 'api')
- if not os.path.exists(source_dir):
- os.makedirs(source_dir)
- for pkg in self.distribution.packages:
- if '.' not in pkg:
- os.path.walk(pkg, _find_modules, modules)
- module_list = modules.keys()
- module_list.sort()
- autoindex_filename = os.path.join(source_dir, 'autoindex.rst')
- with open(autoindex_filename, 'w') as autoindex:
- autoindex.write(""".. toctree::
- :maxdepth: 1
-
-""")
- for module in module_list:
- output_filename = os.path.join(source_dir,
- "%s.rst" % module)
- heading = "The :mod:`%s` Module" % module
- underline = "=" * len(heading)
- values = dict(module=module, heading=heading,
- underline=underline)
-
- print("Generating %s" % output_filename)
- with open(output_filename, 'w') as output_file:
- output_file.write(_rst_template % values)
- autoindex.write(" %s.rst\n" % module)
-
- def run(self):
- if not os.getenv('SPHINX_DEBUG'):
- self.generate_autoindex()
-
- for builder in self.builders:
- self.builder = builder
- self.finalize_options()
- self.project = self.distribution.get_name()
- self.version = self.distribution.get_version()
- self.release = self.distribution.get_version()
- BuildDoc.run(self)
-
- class LocalBuildLatex(LocalBuildDoc):
- builders = ['latex']
-
- cmdclass['build_sphinx'] = LocalBuildDoc
- cmdclass['build_sphinx_latex'] = LocalBuildLatex
- except ImportError:
- pass
-
- return cmdclass
-
-
-def _get_revno(git_dir):
- """Return the number of commits since the most recent tag.
-
- We use git-describe to find this out, but if there are no
- tags then we fall back to counting commits since the beginning
- of time.
- """
- describe = _run_shell_command(
- "git --git-dir=%s describe --always" % git_dir)
- if "-" in describe:
- return describe.rsplit("-", 2)[-2]
-
- # no tags found
- revlist = _run_shell_command(
- "git --git-dir=%s rev-list --abbrev-commit HEAD" % git_dir)
- return len(revlist.splitlines())
-
-
-def _get_version_from_git(pre_version):
- """Return a version which is equal to the tag that's on the current
- revision if there is one, or tag plus number of additional revisions
- if the current revision has no tag."""
-
- git_dir = _get_git_directory()
- if git_dir:
- if pre_version:
- try:
- return _run_shell_command(
- "git --git-dir=" + git_dir + " describe --exact-match",
- throw_on_error=True).replace('-', '.')
- except Exception:
- sha = _run_shell_command(
- "git --git-dir=" + git_dir + " log -n1 --pretty=format:%h")
- return "%s.a%s.g%s" % (pre_version, _get_revno(git_dir), sha)
- else:
- return _run_shell_command(
- "git --git-dir=" + git_dir + " describe --always").replace(
- '-', '.')
- return None
-
-
-def _get_version_from_pkg_info(package_name):
- """Get the version from PKG-INFO file if we can."""
- try:
- pkg_info_file = open('PKG-INFO', 'r')
- except (IOError, OSError):
- return None
- try:
- pkg_info = email.message_from_file(pkg_info_file)
- except email.MessageError:
- return None
- # Check to make sure we're in our own dir
- if pkg_info.get('Name', None) != package_name:
- return None
- return pkg_info.get('Version', None)
-
-
-def get_version(package_name, pre_version=None):
- """Get the version of the project. First, try getting it from PKG-INFO, if
- it exists. If it does, that means we're in a distribution tarball or that
- install has happened. Otherwise, if there is no PKG-INFO file, pull the
- version from git.
-
- We do not support setup.py version sanity in git archive tarballs, nor do
- we support packagers directly sucking our git repo into theirs. We expect
- that a source tarball be made from our git repo - or that if someone wants
- to make a source tarball from a fork of our repo with additional tags in it
- that they understand and desire the results of doing that.
- """
- version = os.environ.get("OSLO_PACKAGE_VERSION", None)
- if version:
- return version
- version = _get_version_from_pkg_info(package_name)
- if version:
- return version
- version = _get_version_from_git(pre_version)
- if version:
- return version
- raise Exception("Versioning for this project requires either an sdist"
- " tarball, or access to an upstream git repository.")
diff --git a/nova/openstack/common/strutils.py b/nova/openstack/common/strutils.py
new file mode 100644
index 000000000..cdf70cb20
--- /dev/null
+++ b/nova/openstack/common/strutils.py
@@ -0,0 +1,150 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2011 OpenStack Foundation.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+"""
+System-level utilities and helper functions.
+"""
+
+import sys
+
+from nova.openstack.common.gettextutils import _
+
+
+TRUE_STRINGS = ('1', 't', 'true', 'on', 'y', 'yes')
+FALSE_STRINGS = ('0', 'f', 'false', 'off', 'n', 'no')
+
+
+def int_from_bool_as_string(subject):
+ """
+ Interpret a string as a boolean and return either 1 or 0.
+
+ Any string value in:
+
+ ('True', 'true', 'On', 'on', '1')
+
+ is interpreted as a boolean True.
+
+ Useful for JSON-decoded stuff and config file parsing
+ """
+ return bool_from_string(subject) and 1 or 0
+
+
+def bool_from_string(subject, strict=False):
+ """
+ Interpret a string as a boolean.
+
+ A case-insensitive match is performed such that strings matching 't',
+ 'true', 'on', 'y', 'yes', or '1' are considered True and, when
+ `strict=False`, anything else is considered False.
+
+ Useful for JSON-decoded stuff and config file parsing.
+
+ If `strict=True`, unrecognized values, including None, will raise a
+ ValueError which is useful when parsing values passed in from an API call.
+ Strings yielding False are 'f', 'false', 'off', 'n', 'no', or '0'.
+ """
+ if not isinstance(subject, basestring):
+ subject = str(subject)
+
+ lowered = subject.strip().lower()
+
+ if lowered in TRUE_STRINGS:
+ return True
+ elif lowered in FALSE_STRINGS:
+ return False
+ elif strict:
+ acceptable = ', '.join(
+ "'%s'" % s for s in sorted(TRUE_STRINGS + FALSE_STRINGS))
+ msg = _("Unrecognized value '%(val)s', acceptable values are:"
+ " %(acceptable)s") % {'val': subject,
+ 'acceptable': acceptable}
+ raise ValueError(msg)
+ else:
+ return False
+
+
+def safe_decode(text, incoming=None, errors='strict'):
+ """
+ Decodes incoming str using `incoming` if they're
+ not already unicode.
+
+ :param incoming: Text's current encoding
+ :param errors: Errors handling policy. See here for valid
+ values http://docs.python.org/2/library/codecs.html
+ :returns: text or a unicode `incoming` encoded
+ representation of it.
+ :raises TypeError: If text is not an isntance of basestring
+ """
+ if not isinstance(text, basestring):
+ raise TypeError("%s can't be decoded" % type(text))
+
+ if isinstance(text, unicode):
+ return text
+
+ if not incoming:
+ incoming = (sys.stdin.encoding or
+ sys.getdefaultencoding())
+
+ try:
+ return text.decode(incoming, errors)
+ except UnicodeDecodeError:
+ # Note(flaper87) If we get here, it means that
+ # sys.stdin.encoding / sys.getdefaultencoding
+ # didn't return a suitable encoding to decode
+ # text. This happens mostly when global LANG
+ # var is not set correctly and there's no
+ # default encoding. In this case, most likely
+ # python will use ASCII or ANSI encoders as
+ # default encodings but they won't be capable
+ # of decoding non-ASCII characters.
+ #
+ # Also, UTF-8 is being used since it's an ASCII
+ # extension.
+ return text.decode('utf-8', errors)
+
+
+def safe_encode(text, incoming=None,
+ encoding='utf-8', errors='strict'):
+ """
+ Encodes incoming str/unicode using `encoding`. If
+ incoming is not specified, text is expected to
+ be encoded with current python's default encoding.
+ (`sys.getdefaultencoding`)
+
+ :param incoming: Text's current encoding
+ :param encoding: Expected encoding for text (Default UTF-8)
+ :param errors: Errors handling policy. See here for valid
+ values http://docs.python.org/2/library/codecs.html
+ :returns: text or a bytestring `encoding` encoded
+ representation of it.
+ :raises TypeError: If text is not an isntance of basestring
+ """
+ if not isinstance(text, basestring):
+ raise TypeError("%s can't be encoded" % type(text))
+
+ if not incoming:
+ incoming = (sys.stdin.encoding or
+ sys.getdefaultencoding())
+
+ if isinstance(text, unicode):
+ return text.encode(encoding, errors)
+ elif text and encoding != incoming:
+ # Decode text before encoding it with `encoding`
+ text = safe_decode(text, incoming, errors)
+ return text.encode(encoding, errors)
+
+ return text
diff --git a/nova/scheduler/driver.py b/nova/scheduler/driver.py
index 92c7779e8..4ad6b8513 100644
--- a/nova/scheduler/driver.py
+++ b/nova/scheduler/driver.py
@@ -25,7 +25,7 @@ import sys
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import utils as compute_utils
@@ -257,8 +257,12 @@ class Scheduler(object):
# If dest is not specified, have scheduler pick one.
if dest is None:
- instance_type = instance_types.extract_instance_type(instance_ref)
- image = self.image_service.show(context, instance_ref['image_ref'])
+ instance_type = flavors.extract_instance_type(instance_ref)
+ if not instance_ref['image_ref']:
+ image = None
+ else:
+ image = self.image_service.show(context,
+ instance_ref['image_ref'])
request_spec = {'instance_properties': instance_ref,
'instance_type': instance_type,
'instance_uuids': [instance_ref['uuid']],
diff --git a/nova/scheduler/filter_scheduler.py b/nova/scheduler/filter_scheduler.py
index 8f99db0ae..566b7846d 100644
--- a/nova/scheduler/filter_scheduler.py
+++ b/nova/scheduler/filter_scheduler.py
@@ -23,7 +23,7 @@ import random
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common import log as logging
from nova.openstack.common.notifier import api as notifier
@@ -70,8 +70,11 @@ class FilterScheduler(driver.Scheduler):
'scheduler.run_instance.start', notifier.INFO, payload)
instance_uuids = request_spec.pop('instance_uuids')
- LOG.debug(_("Attempting to build %(num_instances)d instance(s)"),
- {'num_instances': len(instance_uuids)})
+ LOG.info(_("Attempting to build %(num_instances)d instance(s) "
+ "uuids: %(instance_uuids)s"),
+ {'num_instances': len(instance_uuids),
+ 'instance_uuids': instance_uuids})
+ LOG.debug(_("Request Spec: %s") % request_spec)
weighed_hosts = self._schedule(context, request_spec,
filter_properties, instance_uuids)
@@ -86,6 +89,10 @@ class FilterScheduler(driver.Scheduler):
try:
try:
weighed_host = weighed_hosts.pop(0)
+ LOG.info(_("Choosing host %(weighed_host)s "
+ "for instance %(instance_uuid)s"),
+ {'weighed_host': weighed_host,
+ 'instance_uuid': instance_uuid})
except IndexError:
raise exception.NoValidHost(reason="")
@@ -346,6 +353,8 @@ class FilterScheduler(driver.Scheduler):
weighed_hosts = self.host_manager.get_weighed_hosts(hosts,
filter_properties)
+ LOG.debug(_("Weighed %(hosts)s"), {'hosts': weighed_hosts})
+
scheduler_host_subset_size = CONF.scheduler_host_subset_size
if scheduler_host_subset_size > len(weighed_hosts):
scheduler_host_subset_size = len(weighed_hosts)
@@ -354,8 +363,6 @@ class FilterScheduler(driver.Scheduler):
chosen_host = random.choice(
weighed_hosts[0:scheduler_host_subset_size])
- LOG.debug(_("Choosing host %(chosen_host)s"),
- {'chosen_host': chosen_host})
selected_hosts.append(chosen_host)
# Now consume the resources so the filter/weights
@@ -380,7 +387,7 @@ class FilterScheduler(driver.Scheduler):
host_state = self.host_manager.host_state_cls(dest, node)
host_state.update_from_compute_node(compute)
- instance_type = instance_types.extract_instance_type(instance_ref)
+ instance_type = flavors.extract_instance_type(instance_ref)
filter_properties = {'instance_type': instance_type}
hosts = self.host_manager.get_filtered_hosts([host_state],
diff --git a/nova/servicegroup/drivers/zk.py b/nova/servicegroup/drivers/zk.py
index 55a7097b4..d318020ad 100644
--- a/nova/servicegroup/drivers/zk.py
+++ b/nova/servicegroup/drivers/zk.py
@@ -26,7 +26,7 @@ from nova.openstack.common import loopingcall
from nova.servicegroup import api
evzookeeper = importutils.try_import('evzookeeper')
-membership = importutils.try_import('evzookeeper.membersip')
+membership = importutils.try_import('evzookeeper.membership')
zookeeper = importutils.try_import('zookeeper')
zk_driver_opts = [
diff --git a/nova/tests/api/ec2/test_cinder_cloud.py b/nova/tests/api/ec2/test_cinder_cloud.py
index 4a21f7fad..60797c8f7 100644
--- a/nova/tests/api/ec2/test_cinder_cloud.py
+++ b/nova/tests/api/ec2/test_cinder_cloud.py
@@ -26,7 +26,7 @@ from oslo.config import cfg
from nova.api.ec2 import cloud
from nova.api.ec2 import ec2utils
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import utils as compute_utils
from nova import context
from nova import db
@@ -40,7 +40,7 @@ from nova import volume
CONF = cfg.CONF
CONF.import_opt('compute_driver', 'nova.virt.driver')
-CONF.import_opt('default_instance_type', 'nova.compute.instance_types')
+CONF.import_opt('default_instance_type', 'nova.compute.flavors')
CONF.import_opt('use_ipv6', 'nova.netconf')
@@ -413,8 +413,8 @@ class CinderCloudTestCase(test.TestCase):
def _setUpBlockDeviceMapping(self):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
inst1 = db.instance_create(self.context,
{'image_ref': image_uuid,
'instance_type_id': 1,
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py
index c6ec305c6..e58d260fb 100644
--- a/nova/tests/api/ec2/test_cloud.py
+++ b/nova/tests/api/ec2/test_cloud.py
@@ -33,7 +33,7 @@ from nova.api.ec2 import ec2utils
from nova.api.ec2 import inst_state
from nova.api.metadata import password
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import utils as compute_utils
@@ -58,7 +58,7 @@ from nova import volume
CONF = cfg.CONF
CONF.import_opt('compute_driver', 'nova.virt.driver')
-CONF.import_opt('default_instance_type', 'nova.compute.instance_types')
+CONF.import_opt('default_instance_type', 'nova.compute.flavors')
CONF.import_opt('use_ipv6', 'nova.netconf')
LOG = logging.getLogger(__name__)
@@ -762,8 +762,8 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
inst1 = db.instance_create(self.context, {'reservation_id': 'a',
'image_ref': image_uuid,
'instance_type_id': 1,
@@ -868,8 +868,8 @@ class CloudTestCase(test.TestCase):
fake_change_instance_metadata)
# Create some test images
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
inst1_kwargs = {
'reservation_id': 'a',
@@ -1040,8 +1040,8 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
inst_base = {
'reservation_id': 'a',
'image_ref': image_uuid,
@@ -1095,8 +1095,8 @@ class CloudTestCase(test.TestCase):
def test_instance_state(expected_code, expected_name,
power_state_, vm_state_, values=None):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
values = values or {}
values.update({'image_ref': image_uuid, 'instance_type_id': 1,
'power_state': power_state_, 'vm_state': vm_state_,
@@ -1130,8 +1130,8 @@ class CloudTestCase(test.TestCase):
self._stub_instance_get_with_fixed_ips('get')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
inst1 = db.instance_create(self.context, {'reservation_id': 'a',
'image_ref': image_uuid,
'instance_type_id': 1,
@@ -1157,8 +1157,8 @@ class CloudTestCase(test.TestCase):
def test_describe_instances_deleted(self):
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
args1 = {'reservation_id': 'a',
'image_ref': image_uuid,
'instance_type_id': 1,
@@ -1182,8 +1182,8 @@ class CloudTestCase(test.TestCase):
def test_describe_instances_with_image_deleted(self):
image_uuid = 'aebef54a-ed67-4d10-912f-14455edce176'
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type(1))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type(1))
args1 = {'reservation_id': 'a',
'image_ref': image_uuid,
'instance_type_id': 1,
@@ -2256,9 +2256,9 @@ class CloudTestCase(test.TestCase):
self._fake_bdm_get)
def fake_get(ctxt, instance_id):
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['name'] = 'fake_type'
- sys_meta = instance_types.save_instance_type_info({}, inst_type)
+ sys_meta = flavors.save_instance_type_info({}, inst_type)
sys_meta = utils.dict_to_metadata(sys_meta)
return {
'id': 0,
diff --git a/nova/tests/api/openstack/compute/contrib/test_evacuate.py b/nova/tests/api/openstack/compute/contrib/test_evacuate.py
index 7aa02e53a..816bac565 100644
--- a/nova/tests/api/openstack/compute/contrib/test_evacuate.py
+++ b/nova/tests/api/openstack/compute/contrib/test_evacuate.py
@@ -180,3 +180,19 @@ class EvacuateTest(test.TestCase):
res = req.get_response(app)
self.assertEqual(res.status_int, 200)
+
+ def test_not_admin(self):
+ ctxt = context.RequestContext('fake', 'fake', is_admin=False)
+ app = fakes.wsgi_app(fake_auth_context=ctxt)
+ uuid = self.UUID
+ req = webob.Request.blank('/v2/fake/servers/%s/action' % uuid)
+ req.method = 'POST'
+ req.body = jsonutils.dumps({
+ 'evacuate': {
+ 'host': 'my_host',
+ 'onSharedStorage': 'True',
+ }
+ })
+ req.content_type = 'application/json'
+ res = req.get_response(app)
+ self.assertEqual(res.status_int, 403)
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_access.py b/nova/tests/api/openstack/compute/contrib/test_flavor_access.py
index b3564dede..6bae7882f 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_access.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_access.py
@@ -19,8 +19,8 @@ from lxml import etree
from webob import exc
from nova.api.openstack.compute.contrib import flavor_access
-from nova.api.openstack.compute import flavors
-from nova.compute import instance_types
+from nova.api.openstack.compute import flavors as flavors_api
+from nova.compute import flavors
from nova import context
from nova import exception
from nova import test
@@ -116,15 +116,15 @@ class FakeResponse(object):
class FlavorAccessTest(test.TestCase):
def setUp(self):
super(FlavorAccessTest, self).setUp()
- self.flavor_controller = flavors.Controller()
+ self.flavor_controller = flavors_api.Controller()
self.flavor_access_controller = flavor_access.FlavorAccessController()
self.flavor_action_controller = flavor_access.FlavorActionController()
self.req = FakeRequest()
self.context = self.req.environ['nova.context']
- self.stubs.Set(instance_types, 'get_instance_type_by_flavor_id',
+ self.stubs.Set(flavors, 'get_instance_type_by_flavor_id',
fake_get_instance_type_by_flavor_id)
- self.stubs.Set(instance_types, 'get_all_types', fake_get_all_types)
- self.stubs.Set(instance_types, 'get_instance_type_access_by_flavor_id',
+ self.stubs.Set(flavors, 'get_all_types', fake_get_all_types)
+ self.stubs.Set(flavors, 'get_instance_type_access_by_flavor_id',
fake_get_instance_type_access_by_flavor_id)
def _verify_flavor_list(self, result, expected):
@@ -249,7 +249,7 @@ class FlavorAccessTest(test.TestCase):
def stub_add_instance_type_access(flavorid, projectid, ctxt=None):
self.assertEqual('3', flavorid, "flavorid")
self.assertEqual("proj2", projectid, "projectid")
- self.stubs.Set(instance_types, 'add_instance_type_access',
+ self.stubs.Set(flavors, 'add_instance_type_access',
stub_add_instance_type_access)
expected = {'flavor_access':
[{'flavor_id': '3', 'tenant_id': 'proj3'}]}
@@ -264,7 +264,7 @@ class FlavorAccessTest(test.TestCase):
def stub_add_instance_type_access(flavorid, projectid, ctxt=None):
raise exception.FlavorAccessExists(flavor_id=flavorid,
project_id=projectid)
- self.stubs.Set(instance_types, 'add_instance_type_access',
+ self.stubs.Set(flavors, 'add_instance_type_access',
stub_add_instance_type_access)
body = {'addTenantAccess': {'tenant': 'proj2'}}
req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action',
@@ -277,7 +277,7 @@ class FlavorAccessTest(test.TestCase):
def stub_remove_instance_type_access(flavorid, projectid, ctxt=None):
raise exception.FlavorAccessNotFound(flavor_id=flavorid,
project_id=projectid)
- self.stubs.Set(instance_types, 'remove_instance_type_access',
+ self.stubs.Set(flavors, 'remove_instance_type_access',
stub_remove_instance_type_access)
body = {'removeTenantAccess': {'tenant': 'proj2'}}
req = fakes.HTTPRequest.blank('/v2/fake/flavors/2/action',
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py b/nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py
index 5d15264ab..8a8660a67 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_disabled.py
@@ -16,7 +16,7 @@ from lxml import etree
import webob
from nova.api.openstack.compute.contrib import flavor_disabled
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
@@ -57,9 +57,9 @@ class FlavorDisabledTest(test.TestCase):
'.flavor_disabled.Flavor_disabled')
self.flags(osapi_compute_extension=[ext])
fakes.stub_out_nw_api(self.stubs)
- self.stubs.Set(instance_types, "get_all_types",
+ self.stubs.Set(flavors, "get_all_types",
fake_instance_type_get_all)
- self.stubs.Set(instance_types,
+ self.stubs.Set(flavors,
"get_instance_type_by_flavor_id",
fake_instance_type_get_by_flavor_id)
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py b/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
index 9b58e7b74..2ca02cafa 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_manage.py
@@ -18,7 +18,7 @@ import datetime
import webob
from nova.api.openstack.compute.contrib import flavormanage
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common import jsonutils
from nova import test
@@ -80,11 +80,11 @@ def fake_create(name, memory_mb, vcpus, root_gb, ephemeral_gb,
class FlavorManageTest(test.TestCase):
def setUp(self):
super(FlavorManageTest, self).setUp()
- self.stubs.Set(instance_types,
+ self.stubs.Set(flavors,
"get_instance_type_by_flavor_id",
fake_get_instance_type_by_flavor_id)
- self.stubs.Set(instance_types, "destroy", fake_destroy)
- self.stubs.Set(instance_types, "create", fake_create)
+ self.stubs.Set(flavors, "destroy", fake_destroy)
+ self.stubs.Set(flavors, "create", fake_create)
self.flags(
osapi_compute_extension=[
'nova.api.openstack.compute.contrib.select_extensions'],
@@ -156,7 +156,7 @@ class FlavorManageTest(test.TestCase):
}
}
- self.stubs.Set(instance_types, "create", fake_create)
+ self.stubs.Set(flavors, "create", fake_create)
url = '/v2/fake/flavors'
req = webob.Request.blank(url)
req.headers['Content-Type'] = 'application/json'
@@ -210,7 +210,7 @@ class FlavorManageTest(test.TestCase):
flavorid, swap, rxtx_factor, is_public):
raise exception.InstanceTypeExists(name=name)
- self.stubs.Set(instance_types, "create", fake_create)
+ self.stubs.Set(flavors, "create", fake_create)
url = '/v2/fake/flavors'
req = webob.Request.blank(url)
req.headers['Content-Type'] = 'application/json'
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py b/nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py
index d86f750cf..965d0e1bb 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_rxtx.py
@@ -15,7 +15,7 @@
from lxml import etree
import webob
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
@@ -56,9 +56,9 @@ class FlavorRxtxTest(test.TestCase):
'.flavor_rxtx.Flavor_rxtx')
self.flags(osapi_compute_extension=[ext])
fakes.stub_out_nw_api(self.stubs)
- self.stubs.Set(instance_types, "get_all_types",
+ self.stubs.Set(flavors, "get_all_types",
fake_instance_type_get_all)
- self.stubs.Set(instance_types,
+ self.stubs.Set(flavors,
"get_instance_type_by_flavor_id",
fake_instance_type_get_by_flavor_id)
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavor_swap.py b/nova/tests/api/openstack/compute/contrib/test_flavor_swap.py
index eeb0fe632..ea3ab6e34 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavor_swap.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavor_swap.py
@@ -15,7 +15,7 @@
from lxml import etree
import webob
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
@@ -56,9 +56,9 @@ class FlavorSwapTest(test.TestCase):
'.flavor_swap.Flavor_swap')
self.flags(osapi_compute_extension=[ext])
fakes.stub_out_nw_api(self.stubs)
- self.stubs.Set(instance_types, "get_all_types",
+ self.stubs.Set(flavors, "get_all_types",
fake_instance_type_get_all)
- self.stubs.Set(instance_types,
+ self.stubs.Set(flavors,
"get_instance_type_by_flavor_id",
fake_instance_type_get_by_flavor_id)
diff --git a/nova/tests/api/openstack/compute/contrib/test_flavorextradata.py b/nova/tests/api/openstack/compute/contrib/test_flavorextradata.py
index 1c5703381..f45f98bbc 100644
--- a/nova/tests/api/openstack/compute/contrib/test_flavorextradata.py
+++ b/nova/tests/api/openstack/compute/contrib/test_flavorextradata.py
@@ -17,7 +17,7 @@ import datetime
import webob
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.openstack.common import jsonutils
from nova import test
from nova.tests.api.openstack import fakes
@@ -54,9 +54,9 @@ class FlavorextradataTest(test.TestCase):
ext = ('nova.api.openstack.compute.contrib'
'.flavorextradata.Flavorextradata')
self.flags(osapi_compute_extension=[ext])
- self.stubs.Set(instance_types, 'get_instance_type_by_flavor_id',
+ self.stubs.Set(flavors, 'get_instance_type_by_flavor_id',
fake_get_instance_type_by_flavor_id)
- self.stubs.Set(instance_types, 'get_all_types', fake_get_all_types)
+ self.stubs.Set(flavors, 'get_all_types', fake_get_all_types)
def _verify_flavor_response(self, flavor, expected):
for key in expected:
diff --git a/nova/tests/api/openstack/compute/contrib/test_floating_ips.py b/nova/tests/api/openstack/compute/contrib/test_floating_ips.py
index 0078e754d..bf2063234 100644
--- a/nova/tests/api/openstack/compute/contrib/test_floating_ips.py
+++ b/nova/tests/api/openstack/compute/contrib/test_floating_ips.py
@@ -21,6 +21,7 @@ import testtools
import webob
from nova.api.openstack.compute.contrib import floating_ips
+from nova.api.openstack import extensions
from nova import compute
from nova.compute import utils as compute_utils
from nova import context
@@ -155,8 +156,10 @@ class FloatingIpTest(test.TestCase):
self.context = context.get_admin_context()
self._create_floating_ips()
+ self.ext_mgr = extensions.ExtensionManager()
+ self.ext_mgr.extensions = {}
self.controller = floating_ips.FloatingIPController()
- self.manager = floating_ips.FloatingIPActionController()
+ self.manager = floating_ips.FloatingIPActionController(self.ext_mgr)
def tearDown(self):
self._delete_floating_ip()
@@ -350,8 +353,10 @@ class FloatingIpTest(test.TestCase):
self.controller.delete(req, 1)
def test_floating_ip_associate(self):
+ fixed_address = '192.168.1.100'
+
def fake_associate_floating_ip(*args, **kwargs):
- pass
+ self.assertEqual(fixed_address, kwargs['fixed_address'])
self.stubs.Set(network.api.API, "associate_floating_ip",
fake_associate_floating_ip)
@@ -361,8 +366,26 @@ class FloatingIpTest(test.TestCase):
rsp = self.manager._add_floating_ip(req, 'test_inst', body)
self.assertTrue(rsp.status_int == 202)
- def test_associate_not_allocated_floating_ip_to_instance(self):
+ def test_not_extended_floating_ip_associate_fixed(self):
+ # Check that fixed_address is ignored if os-extended-floating-ips
+ # is not loaded
+ fixed_address_requested = '192.168.1.101'
+ fixed_address_allocated = '192.168.1.100'
+
+ def fake_associate_floating_ip(*args, **kwargs):
+ self.assertEqual(fixed_address_allocated,
+ kwargs['fixed_address'])
+
+ self.stubs.Set(network.api.API, "associate_floating_ip",
+ fake_associate_floating_ip)
+ body = dict(addFloatingIp=dict(address=self.floating_ip,
+ fixed_address=fixed_address_requested))
+
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action')
+ rsp = self.manager._add_floating_ip(req, 'test_inst', body)
+ self.assertTrue(rsp.status_int == 202)
+ def test_associate_not_allocated_floating_ip_to_instance(self):
def fake_associate_floating_ip(self, context, instance,
floating_address, fixed_address,
affect_auto_assigned=False):
@@ -545,6 +568,106 @@ class FloatingIpTest(test.TestCase):
body)
+class ExtendedFloatingIpTest(test.TestCase):
+ floating_ip = "10.10.10.10"
+ floating_ip_2 = "10.10.10.11"
+
+ def _create_floating_ips(self, floating_ips=None):
+ """Create a floating ip object."""
+ if floating_ips is None:
+ floating_ips = [self.floating_ip]
+ elif not isinstance(floating_ips, (list, tuple)):
+ floating_ips = [floating_ips]
+
+ def make_ip_dict(ip):
+ """Shortcut for creating floating ip dict."""
+ return
+
+ dict_ = {'pool': 'nova', 'host': 'fake_host'}
+ return db.floating_ip_bulk_create(
+ self.context, [dict(address=ip, **dict_) for ip in floating_ips],
+ )
+
+ def _delete_floating_ip(self):
+ db.floating_ip_destroy(self.context, self.floating_ip)
+
+ def setUp(self):
+ super(ExtendedFloatingIpTest, self).setUp()
+ self.stubs.Set(compute.api.API, "get",
+ compute_api_get)
+ self.stubs.Set(network.api.API, "get_floating_ip",
+ network_api_get_floating_ip)
+ self.stubs.Set(network.api.API, "get_floating_ip_by_address",
+ network_api_get_floating_ip_by_address)
+ self.stubs.Set(network.api.API, "get_floating_ips_by_project",
+ network_api_get_floating_ips_by_project)
+ self.stubs.Set(network.api.API, "release_floating_ip",
+ network_api_release)
+ self.stubs.Set(network.api.API, "disassociate_floating_ip",
+ network_api_disassociate)
+ self.stubs.Set(network.api.API, "get_instance_id_by_floating_address",
+ get_instance_by_floating_ip_addr)
+ self.stubs.Set(compute_utils, "get_nw_info_for_instance",
+ stub_nw_info(self.stubs))
+ self.flags(
+ osapi_compute_extension=[
+ 'nova.api.openstack.compute.contrib.select_extensions'],
+ osapi_compute_ext_list=['Floating_ips', 'Extended_floating_ips'])
+
+ fake_network.stub_out_nw_api_get_instance_nw_info(self.stubs,
+ spectacular=True)
+ self.stubs.Set(db, 'instance_get',
+ fake_instance_get)
+
+ self.context = context.get_admin_context()
+ self._create_floating_ips()
+
+ self.ext_mgr = extensions.ExtensionManager()
+ self.ext_mgr.extensions = {}
+ self.ext_mgr.extensions['os-floating-ips'] = True
+ self.ext_mgr.extensions['os-extended-floating-ips'] = True
+ self.controller = floating_ips.FloatingIPController()
+ self.manager = floating_ips.FloatingIPActionController(self.ext_mgr)
+
+ def tearDown(self):
+ self._delete_floating_ip()
+ super(ExtendedFloatingIpTest, self).tearDown()
+
+ def test_extended_floating_ip_associate_fixed(self):
+ fixed_address = '192.168.1.101'
+
+ def fake_associate_floating_ip(*args, **kwargs):
+ self.assertEqual(fixed_address, kwargs['fixed_address'])
+
+ self.stubs.Set(network.api.API, "associate_floating_ip",
+ fake_associate_floating_ip)
+ body = dict(addFloatingIp=dict(address=self.floating_ip,
+ fixed_address=fixed_address))
+
+ req = fakes.HTTPRequest.blank('/v2/fake/servers/test_inst/action')
+ rsp = self.manager._add_floating_ip(req, 'test_inst', body)
+ self.assertTrue(rsp.status_int == 202)
+
+ def test_extended_floating_ip_associate_fixed_not_allocated(self):
+ def fake_associate_floating_ip(*args, **kwargs):
+ pass
+
+ self.stubs.Set(network.api.API, "associate_floating_ip",
+ fake_associate_floating_ip)
+ body = dict(addFloatingIp=dict(address=self.floating_ip,
+ fixed_address='11.11.11.11'))
+
+ req = webob.Request.blank('/v2/fake/servers/test_inst/action')
+ req.method = "POST"
+ req.body = jsonutils.dumps(body)
+ req.headers["content-type"] = "application/json"
+ resp = req.get_response(fakes.wsgi_app(init_only=('servers',)))
+ res_dict = jsonutils.loads(resp.body)
+ self.assertEqual(resp.status_int, 400)
+ self.assertEqual(res_dict['badRequest']['message'],
+ "Specified fixed address not assigned to instance")
+
+
class FloatingIpSerializerTest(test.TestCase):
def test_default_serializer(self):
serializer = floating_ips.FloatingIPTemplate()
diff --git a/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py b/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
index ea692c8e6..004a6716e 100644
--- a/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
+++ b/nova/tests/api/openstack/compute/contrib/test_simple_tenant_usage.py
@@ -22,7 +22,7 @@ import webob
from nova.api.openstack.compute.contrib import simple_tenant_usage
from nova.compute import api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import exception
from nova.openstack.common import jsonutils
@@ -59,7 +59,7 @@ FAKE_INST_TYPE = {'id': 1,
def get_fake_db_instance(start, end, instance_id, tenant_id):
sys_meta = utils.dict_to_metadata(
- instance_types.save_instance_type_info({}, FAKE_INST_TYPE))
+ flavors.save_instance_type_info({}, FAKE_INST_TYPE))
return {'id': instance_id,
'uuid': '00000000-0000-0000-0000-00000000000000%02d' % instance_id,
'image_ref': '1',
@@ -415,7 +415,7 @@ class SimpleTenantUsageControllerTest(test.TestCase):
class FakeComputeAPI:
def get_instance_type(self, context, flavor_type):
if flavor_type == 1:
- return instance_types.get_default_instance_type()
+ return flavors.get_default_instance_type()
else:
raise exception.InstanceTypeNotFound(flavor_type)
@@ -429,11 +429,11 @@ class SimpleTenantUsageControllerTest(test.TestCase):
instance_type_id=1,
vm_state='deleted',
deleted=0)
- basetype = instance_types.get_default_instance_type()
+ basetype = flavors.get_default_instance_type()
sys_meta = utils.dict_to_metadata(
- instance_types.save_instance_type_info({}, basetype))
+ flavors.save_instance_type_info({}, basetype))
self.baseinst['system_metadata'] = sys_meta
- self.basetype = instance_types.extract_instance_type(self.baseinst)
+ self.basetype = flavors.extract_instance_type(self.baseinst)
def test_get_flavor_from_sys_meta(self):
# Non-deleted instances get their type information from their
@@ -458,7 +458,7 @@ class SimpleTenantUsageControllerTest(test.TestCase):
deleted=1)
flavor = self.controller._get_flavor(self.context, self.compute_api,
inst_without_sys_meta, {})
- self.assertEqual(flavor, instance_types.get_default_instance_type())
+ self.assertEqual(flavor, flavors.get_default_instance_type())
def test_get_flavor_from_deleted_with_id_of_deleted(self):
# Verify the legacy behavior of instance_type_id pointing to a
diff --git a/nova/tests/api/openstack/compute/contrib/test_snapshots.py b/nova/tests/api/openstack/compute/contrib/test_snapshots.py
index a890abe6f..8e042adf8 100644
--- a/nova/tests/api/openstack/compute/contrib/test_snapshots.py
+++ b/nova/tests/api/openstack/compute/contrib/test_snapshots.py
@@ -67,6 +67,8 @@ class SnapshotApiTest(test.TestCase):
snapshot['display_name'])
self.assertEqual(resp_dict['snapshot']['displayDescription'],
snapshot['display_description'])
+ self.assertEqual(resp_dict['snapshot']['volumeId'],
+ snapshot['volume_id'])
def test_snapshot_create_force(self):
snapshot = {"volume_id": 12,
@@ -88,6 +90,8 @@ class SnapshotApiTest(test.TestCase):
snapshot['display_name'])
self.assertEqual(resp_dict['snapshot']['displayDescription'],
snapshot['display_description'])
+ self.assertEqual(resp_dict['snapshot']['volumeId'],
+ snapshot['volume_id'])
# Test invalid force paramter
snapshot = {"volume_id": 12,
diff --git a/nova/tests/api/openstack/compute/contrib/test_volumes.py b/nova/tests/api/openstack/compute/contrib/test_volumes.py
index 83372b251..ebac609f6 100644
--- a/nova/tests/api/openstack/compute/contrib/test_volumes.py
+++ b/nova/tests/api/openstack/compute/contrib/test_volumes.py
@@ -22,8 +22,9 @@ from webob import exc
from nova.api.openstack.compute.contrib import volumes
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
+from nova import exception
from nova.openstack.common import jsonutils
from nova.openstack.common import timeutils
from nova import test
@@ -46,7 +47,7 @@ def fake_compute_api_create(cls, context, instance_type, image_href, **kwargs):
global _block_device_mapping_seen
_block_device_mapping_seen = kwargs.get('block_device_mapping')
- inst_type = instance_types.get_instance_type_by_flavor_id(2)
+ inst_type = flavors.get_instance_type_by_flavor_id(2)
resv_id = None
return ([{'id': 1,
'display_name': 'test_server',
@@ -183,6 +184,23 @@ class VolumeApiTest(test.TestCase):
self.assertEqual(resp_dict['volume']['availabilityZone'],
vol['availability_zone'])
+ def test_volume_create_bad(self):
+ def fake_volume_create(self, context, size, name, description,
+ snapshot, **param):
+ raise exception.InvalidInput(reason="bad request data")
+
+ self.stubs.Set(cinder.API, "create", fake_volume_create)
+
+ vol = {"size": '#$?',
+ "display_name": "Volume Test Name",
+ "display_description": "Volume Test Desc",
+ "availability_zone": "zone1:host1"}
+ body = {"volume": vol}
+
+ req = fakes.HTTPRequest.blank('/v2/fake/os-volumes')
+ self.assertRaises(webob.exc.HTTPBadRequest,
+ volumes.VolumeController().create, req, body)
+
def test_volume_index(self):
req = webob.Request.blank('/v2/fake/os-volumes')
resp = req.get_response(self.app)
diff --git a/nova/tests/api/openstack/compute/plugins/__init__.py b/nova/tests/api/openstack/compute/plugins/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/tests/api/openstack/compute/plugins/__init__.py
diff --git a/nova/tests/api/openstack/compute/plugins/v3/__init__.py b/nova/tests/api/openstack/compute/plugins/v3/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/tests/api/openstack/compute/plugins/v3/__init__.py
diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_fixed_ips.py b/nova/tests/api/openstack/compute/plugins/v3/test_fixed_ips.py
new file mode 100644
index 000000000..2a1387d15
--- /dev/null
+++ b/nova/tests/api/openstack/compute/plugins/v3/test_fixed_ips.py
@@ -0,0 +1,188 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+
+# Copyright 2012 IBM Corp.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import webob
+
+from nova.api.openstack.compute.plugins.v3 import fixed_ips
+from nova import context
+from nova import db
+from nova import exception
+from nova import test
+from nova.tests.api.openstack import fakes
+
+
+fake_fixed_ips = [{'id': 1,
+ 'address': '192.168.1.1',
+ 'network_id': 1,
+ 'virtual_interface_id': 1,
+ 'instance_uuid': '1',
+ 'allocated': False,
+ 'leased': False,
+ 'reserved': False,
+ 'host': None,
+ 'deleted': False},
+ {'id': 2,
+ 'address': '192.168.1.2',
+ 'network_id': 1,
+ 'virtual_interface_id': 2,
+ 'instance_uuid': '2',
+ 'allocated': False,
+ 'leased': False,
+ 'reserved': False,
+ 'host': None,
+ 'deleted': False},
+ {'id': 3,
+ 'address': '10.0.0.2',
+ 'network_id': 1,
+ 'virtual_interface_id': 3,
+ 'instance_uuid': '3',
+ 'allocated': False,
+ 'leased': False,
+ 'reserved': False,
+ 'host': None,
+ 'deleted': True},
+ ]
+
+
+def fake_fixed_ip_get_by_address(context, address):
+ for fixed_ip in fake_fixed_ips:
+ if fixed_ip['address'] == address and not fixed_ip['deleted']:
+ return fixed_ip
+ raise exception.FixedIpNotFoundForAddress(address=address)
+
+
+def fake_fixed_ip_get_by_address_detailed(context, address):
+ network = {'id': 1,
+ 'cidr': "192.168.1.0/24"}
+ for fixed_ip in fake_fixed_ips:
+ if fixed_ip['address'] == address and not fixed_ip['deleted']:
+ return (fixed_ip, FakeModel(network), None)
+ raise exception.FixedIpNotFoundForAddress(address=address)
+
+
+def fake_fixed_ip_update(context, address, values):
+ fixed_ip = fake_fixed_ip_get_by_address(context, address)
+ if fixed_ip is None:
+ raise exception.FixedIpNotFoundForAddress(address=address)
+ else:
+ for key in values:
+ fixed_ip[key] = values[key]
+
+
+class FakeModel(object):
+ """Stubs out for model."""
+ def __init__(self, values):
+ self.values = values
+
+ def __getattr__(self, name):
+ return self.values[name]
+
+ def __getitem__(self, key):
+ if key in self.values:
+ return self.values[key]
+ else:
+ raise NotImplementedError()
+
+ def __repr__(self):
+ return '<FakeModel: %s>' % self.values
+
+
+def fake_network_get_all(context):
+ network = {'id': 1,
+ 'cidr': "192.168.1.0/24"}
+ return [FakeModel(network)]
+
+
+class FixedIpTest(test.TestCase):
+
+ def setUp(self):
+ super(FixedIpTest, self).setUp()
+
+ self.stubs.Set(db, "fixed_ip_get_by_address",
+ fake_fixed_ip_get_by_address)
+ self.stubs.Set(db, "fixed_ip_get_by_address_detailed",
+ fake_fixed_ip_get_by_address_detailed)
+ self.stubs.Set(db, "fixed_ip_update", fake_fixed_ip_update)
+
+ self.context = context.get_admin_context()
+ self.controller = fixed_ips.FixedIPController()
+
+ def test_fixed_ips_get(self):
+ req = fakes.HTTPRequest.blank('/v3/fake/os-fixed-ips/192.168.1.1')
+ res_dict = self.controller.show(req, '192.168.1.1')
+ response = {'fixed_ip': {'cidr': '192.168.1.0/24',
+ 'hostname': None,
+ 'host': None,
+ 'address': '192.168.1.1'}}
+ self.assertEqual(response, res_dict)
+
+ def test_fixed_ips_get_bad_ip_fail(self):
+ req = fakes.HTTPRequest.blank('/v3/fake/os-fixed-ips/10.0.0.1')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req,
+ '10.0.0.1')
+
+ def test_fixed_ips_get_deleted_ip_fail(self):
+ req = fakes.HTTPRequest.blank('/v3/fake/os-fixed-ips/10.0.0.2')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.show, req,
+ '10.0.0.2')
+
+ def test_fixed_ip_reserve(self):
+ fake_fixed_ips[0]['reserved'] = False
+ body = {'reserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/192.168.1.1/action')
+ result = self.controller.action(req, "192.168.1.1", body)
+
+ self.assertEqual('202 Accepted', result.status)
+ self.assertEqual(fake_fixed_ips[0]['reserved'], True)
+
+ def test_fixed_ip_reserve_bad_ip(self):
+ body = {'reserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/10.0.0.1/action')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req,
+ '10.0.0.1', body)
+
+ def test_fixed_ip_reserve_deleted_ip(self):
+ body = {'reserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/10.0.0.2/action')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req,
+ '10.0.0.2', body)
+
+ def test_fixed_ip_unreserve(self):
+ fake_fixed_ips[0]['reserved'] = True
+ body = {'unreserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/192.168.1.1/action')
+ result = self.controller.action(req, "192.168.1.1", body)
+
+ self.assertEqual('202 Accepted', result.status)
+ self.assertEqual(fake_fixed_ips[0]['reserved'], False)
+
+ def test_fixed_ip_unreserve_bad_ip(self):
+ body = {'unreserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/10.0.0.1/action')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req,
+ '10.0.0.1', body)
+
+ def test_fixed_ip_unreserve_deleted_ip(self):
+ body = {'unreserve': None}
+ req = fakes.HTTPRequest.blank(
+ '/v3/fake/os-fixed-ips/10.0.0.2/action')
+ self.assertRaises(webob.exc.HTTPNotFound, self.controller.action, req,
+ '10.0.0.2', body)
diff --git a/nova/tests/api/openstack/compute/test_extensions.py b/nova/tests/api/openstack/compute/test_extensions.py
index 658d0c474..6e400a075 100644
--- a/nova/tests/api/openstack/compute/test_extensions.py
+++ b/nova/tests/api/openstack/compute/test_extensions.py
@@ -167,6 +167,7 @@ class ExtensionControllerTest(ExtensionTestCase):
"DeferredDelete",
"DiskConfig",
"ExtendedAvailabilityZone",
+ "ExtendedFloatingIps",
"ExtendedIps",
"ExtendedIpsMac",
"ExtendedVIFNet",
diff --git a/nova/tests/api/openstack/compute/test_flavors.py b/nova/tests/api/openstack/compute/test_flavors.py
index 3a11c92fe..13206b6f8 100644
--- a/nova/tests/api/openstack/compute/test_flavors.py
+++ b/nova/tests/api/openstack/compute/test_flavors.py
@@ -22,7 +22,7 @@ import urlparse
from nova.api.openstack.compute import flavors
from nova.api.openstack import xmlutil
-import nova.compute.instance_types
+import nova.compute.flavors
from nova import context
from nova import db
from nova import exception
@@ -86,16 +86,16 @@ class FlavorsTest(test.TestCase):
self.flags(osapi_compute_extension=[])
fakes.stub_out_networking(self.stubs)
fakes.stub_out_rate_limiting(self.stubs)
- self.stubs.Set(nova.compute.instance_types, "get_all_types",
+ self.stubs.Set(nova.compute.flavors, "get_all_types",
fake_instance_type_get_all)
- self.stubs.Set(nova.compute.instance_types,
+ self.stubs.Set(nova.compute.flavors,
"get_instance_type_by_flavor_id",
fake_instance_type_get_by_flavor_id)
self.controller = flavors.Controller()
def test_get_flavor_by_invalid_id(self):
- self.stubs.Set(nova.compute.instance_types,
+ self.stubs.Set(nova.compute.flavors,
"get_instance_type_by_flavor_id",
return_instance_type_not_found)
req = fakes.HTTPRequest.blank('/v2/fake/flavors/asdf')
@@ -341,7 +341,7 @@ class FlavorsTest(test.TestCase):
self.assertEqual(flavor, expected)
def test_get_empty_flavor_list(self):
- self.stubs.Set(nova.compute.instance_types, "get_all_types",
+ self.stubs.Set(nova.compute.flavors, "get_all_types",
empty_instance_type_get_all)
req = fakes.HTTPRequest.blank('/v2/fake/flavors')
@@ -683,7 +683,7 @@ class DisabledFlavorsWithRealDBTest(test.TestCase):
super(DisabledFlavorsWithRealDBTest, self).setUp()
self.controller = flavors.Controller()
- # Add a new disabled type to the list of instance_types/flavors
+ # Add a new disabled type to the list of flavors
self.req = fakes.HTTPRequest.blank('/v2/fake/flavors')
self.context = self.req.environ['nova.context']
self.admin_context = context.get_admin_context()
@@ -762,3 +762,37 @@ class DisabledFlavorsWithRealDBTest(test.TestCase):
self.req, self.disabled_type['flavorid'])['flavor']
self.assertEqual(flavor['name'], self.disabled_type['name'])
+
+
+class ParseIsPublicTest(test.TestCase):
+ def setUp(self):
+ super(ParseIsPublicTest, self).setUp()
+ self.controller = flavors.Controller()
+
+ def assertPublic(self, expected, is_public):
+ self.assertIs(expected, self.controller._parse_is_public(is_public),
+ '%s did not return %s' % (is_public, expected))
+
+ def test_None(self):
+ self.assertPublic(True, None)
+
+ def test_truthy(self):
+ self.assertPublic(True, True)
+ self.assertPublic(True, 't')
+ self.assertPublic(True, 'true')
+ self.assertPublic(True, 'yes')
+ self.assertPublic(True, '1')
+
+ def test_falsey(self):
+ self.assertPublic(False, False)
+ self.assertPublic(False, 'f')
+ self.assertPublic(False, 'false')
+ self.assertPublic(False, 'no')
+ self.assertPublic(False, '0')
+
+ def test_string_none(self):
+ self.assertPublic(None, 'none')
+
+ def test_other(self):
+ self.assertRaises(
+ webob.exc.HTTPBadRequest, self.assertPublic, None, 'other')
diff --git a/nova/tests/api/openstack/compute/test_server_actions.py b/nova/tests/api/openstack/compute/test_server_actions.py
index fe65fe0d9..7347aa169 100644
--- a/nova/tests/api/openstack/compute/test_server_actions.py
+++ b/nova/tests/api/openstack/compute/test_server_actions.py
@@ -195,6 +195,34 @@ class ServerActionsControllerTest(test.TestCase):
self.controller._action_reboot,
req, FAKE_UUID, body)
+ def test_reboot_soft_with_soft_in_progress_raises_conflict(self):
+ body = dict(reboot=dict(type="SOFT"))
+ req = fakes.HTTPRequest.blank(self.url)
+ self.stubs.Set(db, 'instance_get_by_uuid',
+ fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
+ task_state=task_states.REBOOTING))
+ self.assertRaises(webob.exc.HTTPConflict,
+ self.controller._action_reboot,
+ req, FAKE_UUID, body)
+
+ def test_reboot_hard_with_soft_in_progress_does_not_raise(self):
+ body = dict(reboot=dict(type="HARD"))
+ req = fakes.HTTPRequest.blank(self.url)
+ self.stubs.Set(db, 'instance_get_by_uuid',
+ fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
+ task_state=task_states.REBOOTING))
+ self.controller._action_reboot(req, FAKE_UUID, body)
+
+ def test_reboot_hard_with_hard_in_progress_raises_conflict(self):
+ body = dict(reboot=dict(type="HARD"))
+ req = fakes.HTTPRequest.blank(self.url)
+ self.stubs.Set(db, 'instance_get_by_uuid',
+ fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
+ task_state=task_states.REBOOTING_HARD))
+ self.assertRaises(webob.exc.HTTPConflict,
+ self.controller._action_reboot,
+ req, FAKE_UUID, body)
+
def test_rebuild_accepted_minimum(self):
return_server = fakes.fake_instance_get(image_ref='2',
vm_state=vm_states.ACTIVE, host='fake_host')
diff --git a/nova/tests/api/openstack/compute/test_servers.py b/nova/tests/api/openstack/compute/test_servers.py
index 6f03fc523..6d3875431 100644
--- a/nova/tests/api/openstack/compute/test_servers.py
+++ b/nova/tests/api/openstack/compute/test_servers.py
@@ -34,7 +34,7 @@ from nova.api.openstack.compute import views
from nova.api.openstack import extensions
from nova.api.openstack import xmlutil
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import task_states
from nova.compute import vm_states
from nova import context
@@ -1798,7 +1798,7 @@ class ServersControllerCreateTest(test.TestCase):
self.controller = servers.Controller(self.ext_mgr)
def instance_create(context, inst):
- inst_type = instance_types.get_instance_type_by_flavor_id(3)
+ inst_type = flavors.get_instance_type_by_flavor_id(3)
image_uuid = '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6'
def_image_ref = 'http://localhost/images/%s' % image_uuid
self.instance_cache_num += 1
@@ -1936,6 +1936,8 @@ class ServersControllerCreateTest(test.TestCase):
(image_service, image_id) = glance.get_remote_image_service(
context, '')
image_service.update(context, image_uuid, {'status': 'DELETED'})
+ self.addCleanup(image_service.update, context, image_uuid,
+ {'status': 'active'})
req = fakes.HTTPRequest.blank('/v2/fake/servers')
req.method = 'POST'
@@ -2504,7 +2506,7 @@ class ServersControllerCreateTest(test.TestCase):
{'device_name': 'foo3', 'delete_on_termination': 'invalid'},
{'device_name': 'foo4', 'delete_on_termination': 0},
{'device_name': 'foo5', 'delete_on_termination': False}]
- expected_dbm = [
+ expected_bdm = [
{'device_name': 'foo1', 'delete_on_termination': True},
{'device_name': 'foo2', 'delete_on_termination': True},
{'device_name': 'foo3', 'delete_on_termination': False},
@@ -2514,7 +2516,7 @@ class ServersControllerCreateTest(test.TestCase):
old_create = compute_api.API.create
def create(*args, **kwargs):
- self.assertEqual(kwargs['block_device_mapping'], expected_dbm)
+ self.assertEqual(expected_bdm, kwargs['block_device_mapping'])
return old_create(*args, **kwargs)
self.stubs.Set(compute_api.API, 'create', create)
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index c3c4644fc..26b837f52 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -33,7 +33,7 @@ from nova.api.openstack.compute import versions
from nova.api.openstack import urlmap
from nova.api.openstack import wsgi as os_wsgi
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import vm_states
from nova import context
from nova.db.sqlalchemy import models
@@ -437,8 +437,8 @@ def stub_instance(id, user_id=None, project_id=None, host=None,
else:
metadata = []
- inst_type = instance_types.get_instance_type_by_flavor_id(int(flavor_id))
- sys_meta = instance_types.save_instance_type_info({}, inst_type)
+ inst_type = flavors.get_instance_type_by_flavor_id(int(flavor_id))
+ sys_meta = flavors.save_instance_type_info({}, inst_type)
if host is not None:
host = str(host)
@@ -611,8 +611,8 @@ def stub_snapshot(id, **kwargs):
return snapshot
-def stub_snapshot_create(self, context, volume_id, name, description):
- return stub_snapshot(100, volume_id=volume_id, display_name=name,
+def stub_snapshot_create(self, context, volume, name, description):
+ return stub_snapshot(100, volume_id=volume['id'], display_name=name,
display_description=description)
diff --git a/nova/tests/baremetal/test_driver.py b/nova/tests/baremetal/test_driver.py
index f01725370..3b0295a92 100644
--- a/nova/tests/baremetal/test_driver.py
+++ b/nova/tests/baremetal/test_driver.py
@@ -22,6 +22,7 @@
from oslo.config import cfg
+from nova.compute import power_state
from nova import exception
from nova import test
from nova.tests.baremetal.db import base as bm_db_base
@@ -327,3 +328,36 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase):
self.driver.destroy(**node2['destroy_params'])
self.assertEqual([], self.driver.list_instances())
+
+ def test_get_info_no_such_node(self):
+ node = self._create_node()
+ self.assertRaises(exception.InstanceNotFound,
+ self.driver.get_info,
+ node['instance'])
+
+ def test_get_info_ok(self):
+ node = self._create_node()
+ db.bm_node_associate_and_update(self.context, node['node']['uuid'],
+ {'instance_uuid': node['instance']['uuid'],
+ 'instance_name': node['instance']['hostname'],
+ 'task_state': baremetal_states.ACTIVE})
+ res = self.driver.get_info(node['instance'])
+ self.assertEqual(res['state'], power_state.RUNNING)
+
+ def test_get_info_with_defunct_pm(self):
+ # test fix for bug 1178378
+ node = self._create_node()
+ db.bm_node_associate_and_update(self.context, node['node']['uuid'],
+ {'instance_uuid': node['instance']['uuid'],
+ 'instance_name': node['instance']['hostname'],
+ 'task_state': baremetal_states.ACTIVE})
+
+ # fake the power manager and don't get a power state
+ self.mox.StubOutWithMock(fake.FakePowerManager, 'is_power_on')
+ fake.FakePowerManager.is_power_on().AndReturn(None)
+ self.mox.ReplayAll()
+
+ res = self.driver.get_info(node['instance'])
+ # prior to the fix, returned power_state was SHUTDOWN
+ self.assertEqual(res['state'], power_state.NOSTATE)
+ self.mox.VerifyAll()
diff --git a/nova/tests/baremetal/test_ipmi.py b/nova/tests/baremetal/test_ipmi.py
index faf800a46..01bb58d8b 100644
--- a/nova/tests/baremetal/test_ipmi.py
+++ b/nova/tests/baremetal/test_ipmi.py
@@ -85,13 +85,24 @@ class BareMetalIPMITestCase(test.TestCase):
self.ipmi._exec_ipmitool('A B C')
self.mox.VerifyAll()
- def test_is_power(self):
+ def test_is_power_on_ok(self):
self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool')
self.ipmi._exec_ipmitool("power status").AndReturn(
["Chassis Power is on\n"])
self.mox.ReplayAll()
- self.ipmi._is_power("on")
+ res = self.ipmi.is_power_on()
+ self.assertEqual(res, True)
+ self.mox.VerifyAll()
+
+ def test_is_power_no_answer(self):
+ self.mox.StubOutWithMock(self.ipmi, '_exec_ipmitool')
+ self.ipmi._exec_ipmitool("power status").AndReturn(
+ ["Fake reply\n"])
+ self.mox.ReplayAll()
+
+ res = self.ipmi.is_power_on()
+ self.assertEqual(res, None)
self.mox.VerifyAll()
def test_power_already_on(self):
diff --git a/nova/tests/baremetal/test_virtual_power_driver.py b/nova/tests/baremetal/test_virtual_power_driver.py
index 4cac0a3ba..d6d615194 100644
--- a/nova/tests/baremetal/test_virtual_power_driver.py
+++ b/nova/tests/baremetal/test_virtual_power_driver.py
@@ -27,7 +27,6 @@ from nova.tests.baremetal.db import base as bm_db_base
from nova.tests.baremetal.db import utils as bm_db_utils
from nova.tests.image import fake as fake_image
from nova.tests import utils
-from nova import utils as nutils
from nova.virt.baremetal import db
from nova.virt.baremetal import virtual_power_driver
import nova.virt.powervm.common as connection
@@ -352,9 +351,9 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self._create_pm()
self.mox.StubOutWithMock(self.pm, '_set_connection')
- self.mox.StubOutWithMock(nutils, 'ssh_execute')
+ self.mox.StubOutWithMock(processutils, 'ssh_execute')
self.pm._set_connection().AndReturn(True)
- nutils.ssh_execute(None, '/usr/bin/VBoxManage test return',
+ processutils.ssh_execute(None, '/usr/bin/VBoxManage test return',
check_exit_code=True).AndReturn(("test\nreturn", ""))
self.pm._matched_name = 'testNode'
self.mox.ReplayAll()
@@ -367,10 +366,10 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self._create_pm()
self.mox.StubOutWithMock(self.pm, '_set_connection')
- self.mox.StubOutWithMock(nutils, 'ssh_execute')
+ self.mox.StubOutWithMock(processutils, 'ssh_execute')
self.pm._set_connection().AndReturn(True)
- nutils.ssh_execute(None, '/usr/bin/VBoxManage test return',
+ processutils.ssh_execute(None, '/usr/bin/VBoxManage test return',
check_exit_code=True).\
AndRaise(processutils.ProcessExecutionError)
self.mox.ReplayAll()
@@ -384,14 +383,14 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self._create_pm()
self.mox.StubOutWithMock(self.pm, '_check_for_node')
- self.mox.StubOutWithMock(nutils, 'ssh_execute')
+ self.mox.StubOutWithMock(processutils, 'ssh_execute')
self.pm._check_for_node().AndReturn(['"testNode"'])
self.pm._check_for_node().AndReturn(['"testNode"'])
- nutils.ssh_execute('test', '/usr/bin/VBoxManage startvm ',
+ processutils.ssh_execute('test', '/usr/bin/VBoxManage startvm ',
check_exit_code=True).\
AndRaise(processutils.ProcessExecutionError)
- nutils.ssh_execute('test', '/usr/bin/VBoxManage list runningvms',
+ processutils.ssh_execute('test', '/usr/bin/VBoxManage list runningvms',
check_exit_code=True).\
AndRaise(processutils.ProcessExecutionError)
diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py
index f59b876e2..2adb07bdb 100644
--- a/nova/tests/compute/test_compute.py
+++ b/nova/tests/compute/test_compute.py
@@ -33,7 +33,7 @@ from oslo.config import cfg
import nova
from nova import compute
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import manager as compute_manager
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
@@ -220,8 +220,8 @@ class BaseTestCase(test.TestCase):
def make_fake_sys_meta():
sys_meta = {}
- inst_type = instance_types.get_instance_type_by_name(type_name)
- for key in instance_types.system_metadata_instance_type_props:
+ inst_type = flavors.get_instance_type_by_name(type_name)
+ for key in flavors.system_metadata_instance_type_props:
sys_meta['instance_type_%s' % key] = inst_type[key]
return sys_meta
@@ -234,7 +234,7 @@ class BaseTestCase(test.TestCase):
inst['project_id'] = self.project_id
inst['host'] = 'fake_host'
inst['node'] = NODENAME
- type_id = instance_types.get_instance_type_by_name(type_name)['id']
+ type_id = flavors.get_instance_type_by_name(type_name)['id']
inst['instance_type_id'] = type_id
inst['ami_launch_index'] = 0
inst['memory_mb'] = 0
@@ -2160,7 +2160,7 @@ class ComputeTestCase(BaseTestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], inst_ref['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
self.assertEquals(payload['state'], 'active')
self.assertTrue('display_name' in payload)
@@ -2273,7 +2273,7 @@ class ComputeTestCase(BaseTestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
self.assertTrue('display_name' in payload)
self.assertTrue('created_at' in payload)
@@ -2647,7 +2647,7 @@ class ComputeTestCase(BaseTestCase):
reservations = self._ensure_quota_reservations_committed()
instance = jsonutils.to_primitive(self._create_fake_instance())
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
db.instance_update(self.context, instance["uuid"],
{"task_state": task_states.RESIZE_PREP})
self.compute.prep_resize(self.context, instance=instance,
@@ -2727,7 +2727,7 @@ class ComputeTestCase(BaseTestCase):
jsonutils.dumps(connection_info))
# begin resize
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
db.instance_update(self.context, instance["uuid"],
{"task_state": task_states.RESIZE_PREP})
self.compute.prep_resize(self.context, instance=instance,
@@ -2821,7 +2821,7 @@ class ComputeTestCase(BaseTestCase):
reservations = self._ensure_quota_reservations_rolledback()
instance = jsonutils.to_primitive(self._create_fake_instance())
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.compute.prep_resize(self.context, instance=instance,
instance_type=instance_type,
image={}, reservations=reservations)
@@ -2899,7 +2899,7 @@ class ComputeTestCase(BaseTestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], inst_ref['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
self.assertTrue('display_name' in payload)
self.assertTrue('created_at' in payload)
@@ -2915,7 +2915,7 @@ class ComputeTestCase(BaseTestCase):
cur_time = datetime.datetime(2012, 12, 21, 12, 21)
timeutils.set_time_override(old_time)
instance = jsonutils.to_primitive(self._create_fake_instance())
- new_type = instance_types.get_instance_type_by_name('m1.small')
+ new_type = flavors.get_instance_type_by_name('m1.small')
new_type = jsonutils.to_primitive(new_type)
new_type_id = new_type['id']
self.compute.run_instance(self.context, instance=instance)
@@ -2977,7 +2977,7 @@ class ComputeTestCase(BaseTestCase):
new_instance = db.instance_update(self.context, instance['uuid'],
{'host': 'foo'})
new_instance = jsonutils.to_primitive(new_instance)
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.compute.prep_resize(self.context, instance=new_instance,
instance_type=instance_type, image={})
db.migration_get_by_instance_and_status(self.context.elevated(),
@@ -3000,7 +3000,7 @@ class ComputeTestCase(BaseTestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], new_instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
self.assertTrue('display_name' in payload)
self.assertTrue('created_at' in payload)
@@ -3023,7 +3023,7 @@ class ComputeTestCase(BaseTestCase):
new_instance = db.instance_update(self.context, instance['uuid'],
{'host': self.compute.host})
new_instance = jsonutils.to_primitive(new_instance)
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.assertRaises(exception.MigrationError, self.compute.prep_resize,
self.context, instance=new_instance,
@@ -3043,7 +3043,7 @@ class ComputeTestCase(BaseTestCase):
new_instance = db.instance_update(self.context, instance['uuid'],
{'host': None})
new_instance = jsonutils.to_primitive(new_instance)
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.assertRaises(exception.MigrationError, self.compute.prep_resize,
self.context, instance=new_instance,
@@ -3061,7 +3061,7 @@ class ComputeTestCase(BaseTestCase):
throw_up)
instance = jsonutils.to_primitive(self._create_fake_instance())
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
reservations = self._ensure_quota_reservations_rolledback()
@@ -3089,10 +3089,47 @@ class ComputeTestCase(BaseTestCase):
self.compute.terminate_instance(self.context,
instance=jsonutils.to_primitive(instance))
+ def test_resize_instance_driver_rollback(self):
+ # Ensure instance status set to Running after rollback.
+
+ def throw_up(*args, **kwargs):
+ raise exception.InstanceFaultRollback(test.TestingException())
+
+ self.stubs.Set(self.compute.driver, 'migrate_disk_and_power_off',
+ throw_up)
+
+ instance = jsonutils.to_primitive(self._create_fake_instance())
+ instance_type = flavors.get_default_instance_type()
+ reservations = self._ensure_quota_reservations_rolledback()
+ self.compute.run_instance(self.context, instance=instance)
+ new_instance = db.instance_update(self.context, instance['uuid'],
+ {'host': 'foo'})
+ new_instance = jsonutils.to_primitive(new_instance)
+ self.compute.prep_resize(self.context, instance=new_instance,
+ instance_type=instance_type, image={},
+ reservations=reservations)
+ migration_ref = db.migration_get_by_instance_and_status(
+ self.context.elevated(), new_instance['uuid'], 'pre-migrating')
+ db.instance_update(self.context, new_instance['uuid'],
+ {"task_state": task_states.RESIZE_PREP})
+
+ self.assertRaises(test.TestingException, self.compute.resize_instance,
+ self.context, instance=new_instance,
+ migration=migration_ref, image={},
+ reservations=reservations,
+ instance_type=jsonutils.to_primitive(instance_type))
+
+ instance = db.instance_get_by_uuid(self.context, new_instance['uuid'])
+ self.assertEqual(instance['vm_state'], vm_states.ACTIVE)
+ self.assertEqual(instance['task_state'], None)
+
+ self.compute.terminate_instance(self.context,
+ instance=jsonutils.to_primitive(instance))
+
def test_resize_instance(self):
# Ensure instance can be migrated/resized.
instance = jsonutils.to_primitive(self._create_fake_instance())
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.compute.run_instance(self.context, instance=instance)
new_instance = db.instance_update(self.context, instance['uuid'],
@@ -3216,20 +3253,20 @@ class ComputeTestCase(BaseTestCase):
instance['system_metadata'].append(dict(key='instance_type_id',
value=old))
sys_meta = dict(instance_type_id=old)
- self.mox.StubOutWithMock(instance_types, 'extract_instance_type')
- self.mox.StubOutWithMock(instance_types, 'delete_instance_type_info')
- self.mox.StubOutWithMock(instance_types, 'save_instance_type_info')
+ self.mox.StubOutWithMock(flavors, 'extract_instance_type')
+ self.mox.StubOutWithMock(flavors, 'delete_instance_type_info')
+ self.mox.StubOutWithMock(flavors, 'save_instance_type_info')
if revert:
- instance_types.extract_instance_type(instance, 'old_').AndReturn(
+ flavors.extract_instance_type(instance, 'old_').AndReturn(
{'instance_type_id': old})
- instance_types.save_instance_type_info(
+ flavors.save_instance_type_info(
sys_meta, {'instance_type_id': old}).AndReturn(sys_meta)
else:
- instance_types.extract_instance_type(instance).AndReturn(
+ flavors.extract_instance_type(instance).AndReturn(
{'instance_type_id': new})
- instance_types.delete_instance_type_info(
+ flavors.delete_instance_type_info(
sys_meta, 'old_').AndReturn(sys_meta)
- instance_types.delete_instance_type_info(
+ flavors.delete_instance_type_info(
sys_meta, 'new_').AndReturn(sys_meta)
self.mox.ReplayAll()
@@ -3252,7 +3289,7 @@ class ComputeTestCase(BaseTestCase):
self._test_cleanup_stored_instance_types('1', '1', True)
def test_get_by_flavor_id(self):
- type = instance_types.get_instance_type_by_flavor_id(1)
+ type = flavors.get_instance_type_by_flavor_id(1)
self.assertEqual(type['name'], 'm1.tiny')
def test_resize_same_source_fails(self):
@@ -3262,7 +3299,7 @@ class ComputeTestCase(BaseTestCase):
instance = jsonutils.to_primitive(self._create_fake_instance())
self.compute.run_instance(self.context, instance=instance)
instance = db.instance_get_by_uuid(self.context, instance['uuid'])
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.assertRaises(exception.MigrationError, self.compute.prep_resize,
self.context, instance=instance,
instance_type=instance_type, image={},
@@ -3281,7 +3318,7 @@ class ComputeTestCase(BaseTestCase):
reservations = self._ensure_quota_reservations_rolledback()
inst_ref = jsonutils.to_primitive(self._create_fake_instance())
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
self.compute.run_instance(self.context, instance=inst_ref)
inst_ref = db.instance_update(self.context, inst_ref['uuid'],
@@ -3497,7 +3534,7 @@ class ComputeTestCase(BaseTestCase):
instance['name']).AndReturn('fake_disk')
self.compute.compute_rpcapi.pre_live_migration(c,
instance, True, 'fake_disk', dest_host,
- None).AndRaise(test.TestingException())
+ {}).AndRaise(test.TestingException())
self.compute._instance_update(c, instance['uuid'],
host=src_host, vm_state=vm_states.ACTIVE,
@@ -4775,7 +4812,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_too_little_ram(self):
# Test an instance type with too little memory.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['memory_mb'] = 1
self.fake_image['min_ram'] = 2
@@ -4794,7 +4831,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_too_little_disk(self):
# Test an instance type with too little disk space.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['root_gb'] = 1
self.fake_image['min_disk'] = 2
@@ -4813,7 +4850,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_just_enough_ram_and_disk(self):
# Test an instance type with just enough ram and disk space.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['root_gb'] = 2
inst_type['memory_mb'] = 2
@@ -4829,7 +4866,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_no_ram_and_disk_reqs(self):
# Test an instance type with no min_ram or min_disk.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['root_gb'] = 1
inst_type['memory_mb'] = 1
@@ -4842,7 +4879,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_deleted_image(self):
# If we're given a deleted image by glance, we should not be able to
# build from it
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
self.fake_image['name'] = 'fake_name'
self.fake_image['status'] = 'DELETED'
@@ -4861,7 +4898,7 @@ class ComputeAPITestCase(BaseTestCase):
cases = [dict(), dict(display_name=None)]
for instance in cases:
(ref, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(),
+ flavors.get_default_instance_type(),
'fake-image-uuid', **instance)
try:
self.assertNotEqual(ref[0]['display_name'], None)
@@ -4872,7 +4909,7 @@ class ComputeAPITestCase(BaseTestCase):
# Make sure image properties are copied into system metadata.
(ref, resv_id) = self.compute_api.create(
self.context,
- instance_type=instance_types.get_default_instance_type(),
+ instance_type=flavors.get_default_instance_type(),
image_href='fake-image-uuid')
try:
sys_metadata = db.instance_system_metadata_get(self.context,
@@ -4889,7 +4926,7 @@ class ComputeAPITestCase(BaseTestCase):
db.instance_destroy(self.context, ref[0]['uuid'])
def test_create_saves_type_in_system_metadata(self):
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
(ref, resv_id) = self.compute_api.create(
self.context,
instance_type=instance_type,
@@ -4915,7 +4952,7 @@ class ComputeAPITestCase(BaseTestCase):
group = self._create_group()
(ref, resv_id) = self.compute_api.create(
self.context,
- instance_type=instance_types.get_default_instance_type(),
+ instance_type=flavors.get_default_instance_type(),
image_href=None,
security_group=['testgroup'])
try:
@@ -4928,7 +4965,7 @@ class ComputeAPITestCase(BaseTestCase):
db.instance_destroy(self.context, ref[0]['uuid'])
def test_create_instance_with_invalid_security_group_raises(self):
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
pre_build_len = len(db.instance_get_all(self.context))
self.assertRaises(exception.SecurityGroupNotFoundForProject,
@@ -4943,7 +4980,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_large_user_data(self):
# Test an instance type with too much user data.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
self.fake_image['min_ram'] = 2
self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show)
@@ -4955,7 +4992,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_malformed_user_data(self):
# Test an instance type with malformed user data.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
self.fake_image['min_ram'] = 2
self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show)
@@ -4967,7 +5004,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_create_with_base64_user_data(self):
# Test an instance type with ok much user data.
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
self.fake_image['min_ram'] = 2
self.stubs.Set(fake_image._FakeImageService, 'show', self.fake_show)
@@ -4998,7 +5035,7 @@ class ComputeAPITestCase(BaseTestCase):
('hello_server', 'hello-server')]
for display_name, hostname in cases:
(ref, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None,
+ flavors.get_default_instance_type(), None,
display_name=display_name)
try:
self.assertEqual(ref[0]['hostname'], hostname)
@@ -5011,7 +5048,7 @@ class ComputeAPITestCase(BaseTestCase):
(ref, resv_id) = self.compute_api.create(
self.context,
- instance_type=instance_types.get_default_instance_type(),
+ instance_type=flavors.get_default_instance_type(),
image_href=None,
security_group=['testgroup'])
try:
@@ -5027,7 +5064,7 @@ class ComputeAPITestCase(BaseTestCase):
(ref, resv_id) = self.compute_api.create(
self.context,
- instance_type=instance_types.get_default_instance_type(),
+ instance_type=flavors.get_default_instance_type(),
image_href=None,
security_group=['testgroup'])
@@ -5138,7 +5175,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_delete_in_resizing(self):
def fake_quotas_reserve(context, expire=None, project_id=None,
**deltas):
- old_type = instance_types.get_instance_type_by_name('m1.tiny')
+ old_type = flavors.get_instance_type_by_name('m1.tiny')
# ensure using old instance type to create reservations
self.assertEqual(deltas['cores'], -old_type['vcpus'])
self.assertEqual(deltas['ram'], -old_type['memory_mb'])
@@ -5149,7 +5186,7 @@ class ComputeAPITestCase(BaseTestCase):
'host': CONF.host})
# create a fake migration record (manager does this)
- new_inst_type = instance_types.get_instance_type_by_name('m1.small')
+ new_inst_type = flavors.get_instance_type_by_name('m1.small')
db.migration_create(self.context.elevated(),
{'instance_uuid': instance['uuid'],
'old_instance_type_id': instance['instance_type_id'],
@@ -5592,7 +5629,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_hostname_create(self):
# Ensure instance hostname is set during creation.
- inst_type = instance_types.get_instance_type_by_name('m1.tiny')
+ inst_type = flavors.get_instance_type_by_name('m1.tiny')
(instances, _) = self.compute_api.create(self.context,
inst_type,
None,
@@ -5753,7 +5790,7 @@ class ComputeAPITestCase(BaseTestCase):
{'extra_param': 'value1'})
self.assertEqual(image['name'], 'snap1')
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
self.assertEqual(image['min_ram'], self.fake_image['min_ram'])
self.assertEqual(image['min_disk'], instance_type['root_gb'])
properties = image['properties']
@@ -5981,14 +6018,14 @@ class ComputeAPITestCase(BaseTestCase):
self.compute_api.resize(self.context, instance, '4')
# Do the prep/finish_resize steps (manager does this)
- old_type = instance_types.extract_instance_type(instance)
- new_type = instance_types.get_instance_type_by_flavor_id('4')
+ old_type = flavors.extract_instance_type(instance)
+ new_type = flavors.get_instance_type_by_flavor_id('4')
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
- sys_meta = instance_types.save_instance_type_info(sys_meta,
+ sys_meta = flavors.save_instance_type_info(sys_meta,
old_type, 'old_')
- sys_meta = instance_types.save_instance_type_info(sys_meta,
+ sys_meta = flavors.save_instance_type_info(sys_meta,
new_type, 'new_')
- sys_meta = instance_types.save_instance_type_info(sys_meta,
+ sys_meta = flavors.save_instance_type_info(sys_meta,
new_type)
# create a fake migration record (manager does this)
@@ -6050,12 +6087,9 @@ class ComputeAPITestCase(BaseTestCase):
name = 'test_resize_new_flavor'
flavorid = 11
- memory_mb = 128
- root_gb = 0
- vcpus = 1
- instance_types.create(name, memory_mb, vcpus, root_gb, 0,
- flavorid, 0, 1.0, True)
- instance_types.destroy(name)
+ flavors.create(name, 128, 1, 0, ephemeral_gb=0, flavorid=flavorid,
+ swap=0, rxtx_factor=1.0, is_public=True)
+ flavors.destroy(name)
self.assertRaises(exception.FlavorNotFound, self.compute_api.resize,
self.context, instance, flavorid)
@@ -6082,25 +6116,20 @@ class ComputeAPITestCase(BaseTestCase):
name = 'test_resize_with_big_mem'
flavorid = 11
- memory_mb = 102400
- root_gb = 0
- vcpus = 1
- instance_types.create(name, memory_mb, vcpus, root_gb, 0,
- flavorid, 0, 1.0, True)
+ flavors.create(name, 102400, 1, 0, ephemeral_gb=0, flavorid=flavorid,
+ swap=0, rxtx_factor=1.0, is_public=True)
self.assertRaises(exception.TooManyInstances, self.compute_api.resize,
self.context, instance, flavorid)
- instance_types.destroy(name)
+ flavors.destroy(name)
self.compute.terminate_instance(self.context, instance=instance)
def test_resize_revert_deleted_flavor_fails(self):
orig_name = 'test_resize_revert_orig_flavor'
orig_flavorid = 11
- memory_mb = 128
- root_gb = 0
- vcpus = 1
- instance_types.create(orig_name, memory_mb, vcpus, root_gb, 0,
- orig_flavorid, 0, 1.0, True)
+ flavors.create(orig_name, 128, 1, 0, ephemeral_gb=0,
+ flavorid=orig_flavorid, swap=0, rxtx_factor=1.0,
+ is_public=True)
instance = self._create_fake_instance(type_name=orig_name)
instance = db.instance_get_by_uuid(self.context, instance['uuid'])
@@ -6108,7 +6137,7 @@ class ComputeAPITestCase(BaseTestCase):
self.compute.run_instance(self.context, instance=instance)
old_instance_type_id = instance['instance_type_id']
- new_flavor = instance_types.get_instance_type_by_name('m1.tiny')
+ new_flavor = flavors.get_instance_type_by_name('m1.tiny')
new_flavorid = new_flavor['flavorid']
new_instance_type_id = new_flavor['id']
self.compute_api.resize(self.context, instance, new_flavorid)
@@ -6121,7 +6150,7 @@ class ComputeAPITestCase(BaseTestCase):
instance = db.instance_update(self.context, instance['uuid'],
{'task_state': None,
'vm_state': vm_states.RESIZED})
- instance_types.destroy(orig_name)
+ flavors.destroy(orig_name)
self.assertRaises(exception.InstanceTypeNotFound,
self.compute_api.revert_resize,
self.context, instance)
@@ -6169,7 +6198,7 @@ class ComputeAPITestCase(BaseTestCase):
instance = self._create_fake_instance(dict(host='host2'))
instance = db.instance_get_by_uuid(self.context, instance['uuid'])
instance = jsonutils.to_primitive(instance)
- orig_instance_type = instance_types.extract_instance_type(instance)
+ orig_instance_type = flavors.extract_instance_type(instance)
self.compute.run_instance(self.context, instance=instance)
# We need to set the host to something 'known'. Unfortunately,
# the compute manager is using a cached copy of CONF.host,
@@ -6730,7 +6759,7 @@ class ComputeAPITestCase(BaseTestCase):
self.assertThat(bdms, matchers.DictListMatches(expected_result))
self.compute_api._update_block_device_mapping(
- self.context, instance_types.get_default_instance_type(),
+ self.context, flavors.get_default_instance_type(),
instance['uuid'], block_device_mapping)
bdms = [self._parse_db_block_device_mapping(bdm_ref)
for bdm_ref in db.block_device_mapping_get_all_by_instance(
@@ -6789,7 +6818,7 @@ class ComputeAPITestCase(BaseTestCase):
"""Verify building an instance has a reservation_id that
matches return value from create"""
(refs, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None)
+ flavors.get_default_instance_type(), None)
try:
self.assertEqual(len(refs), 1)
self.assertEqual(refs[0]['reservation_id'], resv_id)
@@ -6802,7 +6831,7 @@ class ComputeAPITestCase(BaseTestCase):
in both instances
"""
(refs, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None,
+ flavors.get_default_instance_type(), None,
min_count=2, max_count=2)
try:
self.assertEqual(len(refs), 2)
@@ -6816,7 +6845,7 @@ class ComputeAPITestCase(BaseTestCase):
def test_multi_instance_display_name_template(self):
self.flags(multi_instance_display_name_template='%(name)s')
(refs, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None,
+ flavors.get_default_instance_type(), None,
min_count=2, max_count=2, display_name='x')
self.assertEqual(refs[0]['display_name'], 'x')
self.assertEqual(refs[0]['hostname'], 'x')
@@ -6825,7 +6854,7 @@ class ComputeAPITestCase(BaseTestCase):
self.flags(multi_instance_display_name_template='%(name)s-%(count)s')
(refs, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None,
+ flavors.get_default_instance_type(), None,
min_count=2, max_count=2, display_name='x')
self.assertEqual(refs[0]['display_name'], 'x-1')
self.assertEqual(refs[0]['hostname'], 'x-1')
@@ -6834,7 +6863,7 @@ class ComputeAPITestCase(BaseTestCase):
self.flags(multi_instance_display_name_template='%(name)s-%(uuid)s')
(refs, resv_id) = self.compute_api.create(self.context,
- instance_types.get_default_instance_type(), None,
+ flavors.get_default_instance_type(), None,
min_count=2, max_count=2, display_name='x')
self.assertEqual(refs[0]['display_name'], 'x-%s' % refs[0]['uuid'])
self.assertEqual(refs[0]['hostname'], 'x-%s' % refs[0]['uuid'])
@@ -7537,7 +7566,7 @@ class ComputeAPITestCase(BaseTestCase):
inst['project_id'] = self.project_id
inst['host'] = 'fake_host'
inst['node'] = NODENAME
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
inst['instance_type_id'] = type_id
inst['ami_launch_index'] = 0
inst['memory_mb'] = 0
@@ -8046,7 +8075,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
def setUp(self):
super(DisabledInstanceTypesTestCase, self).setUp()
self.compute_api = compute.API()
- self.inst_type = instance_types.get_default_instance_type()
+ self.inst_type = flavors.get_default_instance_type()
def test_can_build_instance_from_visible_instance_type(self):
self.inst_type['disabled'] = False
@@ -8061,7 +8090,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
def test_can_resize_to_visible_instance_type(self):
instance = self._create_fake_instance()
orig_get_instance_type_by_flavor_id =\
- instance_types.get_instance_type_by_flavor_id
+ flavors.get_instance_type_by_flavor_id
def fake_get_instance_type_by_flavor_id(flavor_id, ctxt=None,
read_deleted="yes"):
@@ -8071,7 +8100,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
instance_type['disabled'] = False
return instance_type
- self.stubs.Set(instance_types, 'get_instance_type_by_flavor_id',
+ self.stubs.Set(flavors, 'get_instance_type_by_flavor_id',
fake_get_instance_type_by_flavor_id)
# FIXME(sirp): for legacy this raises FlavorNotFound instead of
@@ -8082,7 +8111,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
def test_cannot_resize_to_disabled_instance_type(self):
instance = self._create_fake_instance()
orig_get_instance_type_by_flavor_id = \
- instance_types.get_instance_type_by_flavor_id
+ flavors.get_instance_type_by_flavor_id
def fake_get_instance_type_by_flavor_id(flavor_id, ctxt=None,
read_deleted="yes"):
@@ -8092,7 +8121,7 @@ class DisabledInstanceTypesTestCase(BaseTestCase):
instance_type['disabled'] = True
return instance_type
- self.stubs.Set(instance_types, 'get_instance_type_by_flavor_id',
+ self.stubs.Set(flavors, 'get_instance_type_by_flavor_id',
fake_get_instance_type_by_flavor_id)
# FIXME(sirp): for legacy this raises FlavorNotFound instead of
@@ -8386,7 +8415,7 @@ class ComputeRescheduleResizeOrReraiseTestCase(BaseTestCase):
super(ComputeRescheduleResizeOrReraiseTestCase, self).setUp()
self.instance = self._create_fake_instance()
self.instance_uuid = self.instance['uuid']
- self.instance_type = instance_types.get_instance_type_by_name(
+ self.instance_type = flavors.get_instance_type_by_name(
"m1.tiny")
def test_reschedule_resize_or_reraise_called(self):
@@ -8493,7 +8522,7 @@ class ComputeInactiveImageTestCase(BaseTestCase):
def test_create_instance_with_deleted_image(self):
# Make sure we can't start an instance with a deleted image.
- inst_type = instance_types.get_instance_type_by_name('m1.tiny')
+ inst_type = flavors.get_instance_type_by_name('m1.tiny')
self.assertRaises(exception.ImageNotActive,
self.compute_api.create,
self.context, inst_type, 'fake-image-uuid')
@@ -8531,6 +8560,24 @@ class EvacuateHostTestCase(BaseTestCase):
instance = db.instance_get(self.context, self.inst_ref['id'])
self.assertEqual(instance['host'], self.compute.host)
+ def test_rebuild_with_instance_in_stopped_state(self):
+ """Confirm evacuate scenario updates vm_state to stopped
+ if instance is in stopped state
+ """
+ #Initialize the VM to stopped state
+ db.instance_update(self.context, self.inst_ref['uuid'],
+ {"vm_state": vm_states.STOPPED})
+ self.inst_ref['vm_state'] = vm_states.STOPPED
+
+ self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True)
+ self.mox.ReplayAll()
+
+ self._rebuild()
+
+ #Check the vm state is reset to stopped
+ instance = db.instance_get(self.context, self.inst_ref['id'])
+ self.assertEqual(instance['vm_state'], vm_states.STOPPED)
+
def test_rebuild_with_wrong_shared_storage(self):
"""Confirm evacuate scenario does not update host."""
self.stubs.Set(self.compute.driver, 'instance_on_disk', lambda x: True)
diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py
index 05d91075c..d2bc41003 100644
--- a/nova/tests/compute/test_compute_utils.py
+++ b/nova/tests/compute/test_compute_utils.py
@@ -21,7 +21,7 @@ import string
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import utils as compute_utils
from nova import context
from nova import db
@@ -185,7 +185,7 @@ class ComputeValidateDeviceTestCase(test.TestCase):
'ephemeral_gb': 10,
'swap': 0,
})
- self.stubs.Set(instance_types, 'get_instance_type',
+ self.stubs.Set(flavors, 'get_instance_type',
lambda instance_type_id, ctxt=None: self.instance_type)
device = self._validate_device()
self.assertEqual(device, '/dev/xvdc')
@@ -195,7 +195,7 @@ class ComputeValidateDeviceTestCase(test.TestCase):
'ephemeral_gb': 0,
'swap': 10,
})
- self.stubs.Set(instance_types, 'get_instance_type',
+ self.stubs.Set(flavors, 'get_instance_type',
lambda instance_type_id, ctxt=None: self.instance_type)
device = self._validate_device()
self.assertEqual(device, '/dev/xvdb')
@@ -205,7 +205,7 @@ class ComputeValidateDeviceTestCase(test.TestCase):
'ephemeral_gb': 10,
'swap': 10,
})
- self.stubs.Set(instance_types, 'get_instance_type',
+ self.stubs.Set(flavors, 'get_instance_type',
lambda instance_type_id, ctxt=None: self.instance_type)
device = self._validate_device()
self.assertEqual(device, '/dev/xvdd')
@@ -215,7 +215,7 @@ class ComputeValidateDeviceTestCase(test.TestCase):
'ephemeral_gb': 0,
'swap': 10,
})
- self.stubs.Set(instance_types, 'get_instance_type',
+ self.stubs.Set(flavors, 'get_instance_type',
lambda instance_type_id, ctxt=None: self.instance_type)
device = self._validate_device()
self.assertEqual(device, '/dev/xvdb')
@@ -258,8 +258,8 @@ class UsageInfoTestCase(test.TestCase):
def _create_instance(self, params={}):
"""Create a test instance."""
- instance_type = instance_types.get_instance_type_by_name('m1.tiny')
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ instance_type = flavors.get_instance_type_by_name('m1.tiny')
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
inst = {}
inst['image_ref'] = 1
inst['reservation_id'] = 'r-fakeres'
@@ -295,7 +295,7 @@ class UsageInfoTestCase(test.TestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
for attr in ('display_name', 'created_at', 'launched_at',
'state', 'state_description',
@@ -340,7 +340,7 @@ class UsageInfoTestCase(test.TestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
for attr in ('display_name', 'created_at', 'launched_at',
'state', 'state_description',
@@ -376,7 +376,7 @@ class UsageInfoTestCase(test.TestCase):
self.assertEquals(payload['user_id'], self.user_id)
self.assertEquals(payload['instance_id'], instance['uuid'])
self.assertEquals(payload['instance_type'], 'm1.tiny')
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
self.assertEquals(str(payload['instance_type_id']), str(type_id))
for attr in ('display_name', 'created_at', 'launched_at',
'state', 'state_description', 'image_meta'):
diff --git a/nova/tests/compute/test_resource_tracker.py b/nova/tests/compute/test_resource_tracker.py
index 6d26174c7..43bed38ba 100644
--- a/nova/tests/compute/test_resource_tracker.py
+++ b/nova/tests/compute/test_resource_tracker.py
@@ -21,7 +21,7 @@ import uuid
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import resource_tracker
from nova.compute import task_states
from nova.compute import vm_states
@@ -153,7 +153,7 @@ class BaseTestCase(test.TestCase):
def _fake_instance_system_metadata(self, instance_type, prefix=''):
sys_meta = []
- for key in instance_types.system_metadata_instance_type_props.keys():
+ for key in flavors.system_metadata_instance_type_props.keys():
sys_meta.append({'key': '%sinstance_type_%s' % (prefix, key),
'value': instance_type[key]})
return sys_meta
diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py
index b3088855a..3780fc7cf 100644
--- a/nova/tests/conductor/test_conductor.py
+++ b/nova/tests/conductor/test_conductor.py
@@ -17,7 +17,7 @@
import mox
from nova.api.ec2 import ec2utils
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import utils as compute_utils
from nova.compute import vm_states
from nova import conductor
@@ -73,7 +73,7 @@ class _BaseTestCase(object):
inst['user_id'] = self.user_id
inst['project_id'] = self.project_id
inst['host'] = 'fake_host'
- type_id = instance_types.get_instance_type_by_name(type_name)['id']
+ type_id = flavors.get_instance_type_by_name(type_name)['id']
inst['instance_type_id'] = type_id
inst['ami_launch_index'] = 0
inst['memory_mb'] = 0
diff --git a/nova/tests/fake_policy.py b/nova/tests/fake_policy.py
index 3f2d423f4..1290ef80b 100644
--- a/nova/tests/fake_policy.py
+++ b/nova/tests/fake_policy.py
@@ -119,7 +119,7 @@ policy_data = """
"compute_extension:createserverext": "",
"compute_extension:deferred_delete": "",
"compute_extension:disk_config": "",
- "compute_extension:evacuate": "",
+ "compute_extension:evacuate": "is_admin:True",
"compute_extension:extended_server_attributes": "",
"compute_extension:extended_status": "",
"compute_extension:extended_availability_zone": "",
diff --git a/nova/tests/fake_utils.py b/nova/tests/fake_processutils.py
index 6a295b43b..04d39e7e5 100644
--- a/nova/tests/fake_utils.py
+++ b/nova/tests/fake_processutils.py
@@ -14,7 +14,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-"""This modules stubs out functions in nova.utils."""
+"""This modules stubs out functions in openstack.common.processutils."""
import re
@@ -22,7 +22,6 @@ from eventlet import greenthread
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
-from nova import utils
LOG = logging.getLogger(__name__)
@@ -106,7 +105,7 @@ def fake_execute(*cmd_parts, **kwargs):
return reply
-def stub_out_utils_execute(stubs):
+def stub_out_processutils_execute(stubs):
fake_execute_set_repliers([])
fake_execute_clear_log()
- stubs.Set(utils, 'execute', fake_execute)
+ stubs.Set(processutils, 'execute', fake_execute)
diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
index 1d3d2ea90..d559b4890 100644
--- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
+++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.json.tpl
@@ -233,6 +233,14 @@
"updated": "%(timestamp)s"
},
{
+ "alias": "os-extended-floating-ips",
+ "description": "%(text)s",
+ "links": [],
+ "name": "ExtendedFloatingIps",
+ "namespace": "http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2",
+ "updated": "%(timestamp)s"
+ },
+ {
"alias": "os-fixed-ips",
"description": "Fixed IPs support.",
"links": [],
diff --git a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
index 440996966..cc9ae4c02 100644
--- a/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
+++ b/nova/tests/integrated/api_samples/all_extensions/extensions-get-resp.xml.tpl
@@ -87,6 +87,9 @@
<extension alias="os-evacuate" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/evacuate/api/v2" name="Evacuate">
<description>%(text)s</description>
</extension>
+ <extension alias="os-extended-floating-ips" updated="%(timestamp)s" namespace="http://docs.openstack.org/compute/ext/extended_floating_ips/api/v2" name="ExtendedFloatingIps">
+ <description>%(text)s</description>
+ </extension>
<extension alias="os-fixed-ips" name="FixedIPs" namespace="http://docs.openstack.org/compute/ext/fixed_ips/api/v2" updated="2012-10-18T13:25:27-06:00">
<description>Fixed IPs support.</description>
</extension>
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tpl
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.json.tpl
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tpl
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-nopool-req.xml.tpl
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tpl
new file mode 100644
index 000000000..24129f495
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.json.tpl
@@ -0,0 +1,3 @@
+{
+ "pool": "%(pool)s"
+} \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tpl
new file mode 100644
index 000000000..a80147389
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-req.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<pool>%(pool)s</pool> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tpl
new file mode 100644
index 000000000..10ee8d9bd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.json.tpl
@@ -0,0 +1,9 @@
+{
+ "floating_ip": {
+ "fixed_ip": null,
+ "id": 1,
+ "instance_id": null,
+ "ip": "10.10.10.1",
+ "pool": "nova"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tpl
new file mode 100644
index 000000000..e0f68ef50
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-create-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ip instance_id="None" ip="10.10.10.1" fixed_ip="None" id="1" pool="nova"/> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tpl
new file mode 100644
index 000000000..10ee8d9bd
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.json.tpl
@@ -0,0 +1,9 @@
+{
+ "floating_ip": {
+ "fixed_ip": null,
+ "id": 1,
+ "instance_id": null,
+ "ip": "10.10.10.1",
+ "pool": "nova"
+ }
+}
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl
new file mode 100644
index 000000000..e0f68ef50
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-get-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ip instance_id="None" ip="10.10.10.1" fixed_ip="None" id="1" pool="nova"/> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tpl
new file mode 100644
index 000000000..12f118da5
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.json.tpl
@@ -0,0 +1,3 @@
+{
+ "floating_ips": []
+}
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tpl
new file mode 100644
index 000000000..da6f0d4ce
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-empty-resp.xml.tpl
@@ -0,0 +1,2 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ips/> \ No newline at end of file
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tpl
new file mode 100644
index 000000000..06f57451c
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.json.tpl
@@ -0,0 +1,19 @@
+{
+ "floating_ips": [
+ {
+ "fixed_ip": null,
+ "id": 1,
+ "instance_id": null,
+ "ip": "10.10.10.1",
+ "pool": "nova"
+ },
+ {
+ "fixed_ip": null,
+ "id": 2,
+ "instance_id": null,
+ "ip": "10.10.10.2",
+ "pool": "nova"
+ }
+ ]
+}
+
diff --git a/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tpl b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tpl
new file mode 100644
index 000000000..bbd0b117e
--- /dev/null
+++ b/nova/tests/integrated/api_samples/os-extended-floating-ips/floating-ips-list-resp.xml.tpl
@@ -0,0 +1,5 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<floating_ips>
+ <floating_ip instance_id="None" ip="10.10.10.1" fixed_ip="None" id="1" pool="nova"/>
+ <floating_ip instance_id="None" ip="10.10.10.2" fixed_ip="None" id="2" pool="nova"/>
+</floating_ips>
diff --git a/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl b/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl
index 73cd02d9d..ddffd97a3 100644
--- a/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl
+++ b/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.json.tpl
@@ -6,27 +6,6 @@
"id": 100,
"size": 100,
"status": "available",
- "volumeId": {
- "attach_status": "attached",
- "availability_zone": "fakeaz",
- "created_at": "%(timestamp)s",
- "display_description": "displaydesc",
- "display_name": "displayname",
- "host": "fakehost",
- "id": "%(uuid)s",
- "instance_uuid": "fakeuuid",
- "mountpoint": "/",
- "name": "vol name",
- "project_id": "fakeproject",
- "size": 1,
- "snapshot_id": null,
- "status": "fakestatus",
- "user_id": "fakeuser",
- "volume_metadata": [],
- "volume_type": {
- "name": "vol_type_name"
- },
- "volume_type_id": "fakevoltype"
- }
+ "volumeId": "%(uuid)s"
}
}
diff --git a/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl b/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl
index aa713311f..d75ae7ddd 100644
--- a/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl
+++ b/nova/tests/integrated/api_samples/os-volumes/snapshot-create-resp.xml.tpl
@@ -1,2 +1,2 @@
<?xml version='1.0' encoding='UTF-8'?>
-<snapshot status="available" displayDescription="%(description)s" displayName="%(snapshot_name)s" volumeId="{'instance_uuid': 'fakeuuid', 'status': 'fakestatus', 'user_id': 'fakeuser', 'name': 'vol name', 'display_name': 'displayname', 'availability_zone': 'fakeaz', 'created_at': datetime.datetime(1999, 1, 1, 1, 1, 1), 'attach_status': 'attached', 'display_description': 'displaydesc', 'host': 'fakehost', 'volume_type_id': 'fakevoltype', 'volume_metadata': [], 'volume_type': {'name': 'vol_type_name'}, 'snapshot_id': None, 'mountpoint': '/', 'project_id': 'fakeproject', 'id': u'521752a6-acf6-4b2d-bc7a-119f9148cd8c', 'size': 1}" id="100" createdAt="%(timestamp)s" size="100"/>
+<snapshot status="available" displayDescription="%(description)s" displayName="%(snapshot_name)s" volumeId="521752a6-acf6-4b2d-bc7a-119f9148cd8c" id="100" createdAt="%(timestamp)s" size="100"/>
diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py
index cc5455c7f..dd18a4400 100644
--- a/nova/tests/integrated/test_api_samples.py
+++ b/nova/tests/integrated/test_api_samples.py
@@ -83,12 +83,15 @@ class ApiSampleTestBase(integrated_helpers._IntegratedTestBase):
extension_name = None
def setUp(self):
+ extends = []
self.flags(use_ipv6=False,
osapi_compute_link_prefix=self._get_host(),
osapi_glance_link_prefix=self._get_glance_host())
if not self.all_extensions:
+ if hasattr(self, 'extends_name'):
+ extends = [self.extends_name]
ext = [self.extension_name] if self.extension_name else []
- self.flags(osapi_compute_extension=ext)
+ self.flags(osapi_compute_extension=ext + extends)
super(ApiSampleTestBase, self).setUp()
fake_network.stub_compute_with_ips(self.stubs)
self.generate_samples = os.getenv('GENERATE_SAMPLES') is not None
@@ -1355,10 +1358,21 @@ class FloatingIpsJsonTest(ApiSampleTestBase):
self.assertEqual(response.status, 202)
+class ExtendedFloatingIpsJsonTest(FloatingIpsJsonTest):
+ extends_name = ("nova.api.openstack.compute.contrib."
+ "floating_ips.Floating_ips")
+ extension_name = ("nova.api.openstack.compute.contrib."
+ "extended_floating_ips.Extended_floating_ips")
+
+
class FloatingIpsXmlTest(FloatingIpsJsonTest):
ctype = 'xml'
+class ExtendedFloatingIpsXmlTest(ExtendedFloatingIpsJsonTest):
+ ctype = 'xml'
+
+
class FloatingIpsBulkJsonTest(ApiSampleTestBase):
extension_name = "nova.api.openstack.compute.contrib." \
"floating_ips_bulk.Floating_ips_bulk"
diff --git a/nova/tests/network/test_api.py b/nova/tests/network/test_api.py
index 304229b20..871d26616 100644
--- a/nova/tests/network/test_api.py
+++ b/nova/tests/network/test_api.py
@@ -22,7 +22,7 @@ import random
import mox
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import exception
from nova import network
@@ -81,9 +81,9 @@ class ApiTestCase(test.TestCase):
self.network_api.network_rpcapi.allocate_for_instance(
mox.IgnoreArg(), **kwargs).AndReturn([])
self.mox.ReplayAll()
- inst_type = instance_types.get_default_instance_type()
+ inst_type = flavors.get_default_instance_type()
inst_type['rxtx_factor'] = 0
- sys_meta = instance_types.save_instance_type_info({}, inst_type)
+ sys_meta = flavors.save_instance_type_info({}, inst_type)
instance = dict(id='id', uuid='uuid', project_id='project_id',
host='host', system_metadata=utils.dict_to_metadata(sys_meta))
self.network_api.allocate_for_instance(
@@ -140,10 +140,10 @@ class ApiTestCase(test.TestCase):
self._do_test_associate_floating_ip(None)
def _stub_migrate_instance_calls(self, method, multi_host, info):
- fake_instance_type = instance_types.get_default_instance_type()
+ fake_instance_type = flavors.get_default_instance_type()
fake_instance_type['rxtx_factor'] = 1.21
sys_meta = utils.dict_to_metadata(
- instance_types.save_instance_type_info({}, fake_instance_type))
+ flavors.save_instance_type_info({}, fake_instance_type))
fake_instance = {'uuid': 'fake_uuid',
'instance_type_id': fake_instance_type['id'],
'project_id': 'fake_project_id',
@@ -255,3 +255,19 @@ class ApiTestCase(test.TestCase):
instance = {'uuid': FAKE_UUID}
result = self.network_api._is_multi_host(self.context, instance)
self.assertEqual(is_multi_host, result)
+
+ def test_network_disassociate_project(self):
+ def fake_network_disassociate(ctx, network_id, disassociate_host,
+ disassociate_project):
+ self.assertEqual(network_id, 1)
+ self.assertEqual(disassociate_host, False)
+ self.assertEqual(disassociate_project, True)
+
+ def fake_get(context, network_uuid):
+ return {'id': 1}
+
+ self.stubs.Set(self.network_api.db, 'network_disassociate',
+ fake_network_disassociate)
+ self.stubs.Set(self.network_api, 'get', fake_get)
+
+ self.network_api.associate(self.context, FAKE_UUID, project=None)
diff --git a/nova/tests/network/test_quantumv2.py b/nova/tests/network/test_quantumv2.py
index 5922d7e1e..ec1e88d86 100644
--- a/nova/tests/network/test_quantumv2.py
+++ b/nova/tests/network/test_quantumv2.py
@@ -21,7 +21,7 @@ import mox
from oslo.config import cfg
from quantumclient.v2_0 import client
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import exception
from nova.network import model
@@ -389,10 +389,10 @@ class TestQuantumv2(test.TestCase):
self.moxed_client.list_extensions().AndReturn(
{'extensions': [{'name': 'nvp-qos'}]})
self.mox.ReplayAll()
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
instance_type['rxtx_factor'] = 1
sys_meta = utils.dict_to_metadata(
- instance_types.save_instance_type_info({}, instance_type))
+ flavors.save_instance_type_info({}, instance_type))
instance = {'system_metadata': sys_meta}
port_req_body = {'port': {}}
api._populate_quantum_extension_values(instance, port_req_body)
diff --git a/nova/tests/scheduler/fakes.py b/nova/tests/scheduler/fakes.py
index 4e4ab7c37..024d37969 100644
--- a/nova/tests/scheduler/fakes.py
+++ b/nova/tests/scheduler/fakes.py
@@ -18,7 +18,7 @@ Fakes For Scheduler tests.
import mox
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import vm_states
from nova import db
from nova.scheduler import filter_scheduler
@@ -126,7 +126,7 @@ class FakeInstance(object):
inst['launch_time'] = '10'
inst['user_id'] = 'fake'
inst['project_id'] = 'fake'
- type_id = instance_types.get_instance_type_by_name(type_name)['id']
+ type_id = flavors.get_instance_type_by_name(type_name)['id']
inst['instance_type_id'] = type_id
inst['ami_launch_index'] = 0
inst.update(params)
diff --git a/nova/tests/scheduler/test_filter_scheduler.py b/nova/tests/scheduler/test_filter_scheduler.py
index 74952aa0e..c8c04dc77 100644
--- a/nova/tests/scheduler/test_filter_scheduler.py
+++ b/nova/tests/scheduler/test_filter_scheduler.py
@@ -18,7 +18,7 @@ Tests For Filter Scheduler.
import mox
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import utils as compute_utils
from nova.compute import vm_states
@@ -329,7 +329,7 @@ class FilterSchedulerTestCase(test_scheduler.SchedulerTestCase):
instance = db.instance_create(self.context, {})
instance_properties = {'project_id': 'fake', 'os_type': 'Linux'}
- instance_type = instance_types.get_instance_type_by_name("m1.tiny")
+ instance_type = flavors.get_instance_type_by_name("m1.tiny")
request_spec = {'instance_properties': instance_properties,
'instance_type': instance_type}
retry = {'hosts': [], 'num_attempts': 1}
diff --git a/nova/tests/scheduler/test_scheduler.py b/nova/tests/scheduler/test_scheduler.py
index 461b81b4b..f4f607647 100644
--- a/nova/tests/scheduler/test_scheduler.py
+++ b/nova/tests/scheduler/test_scheduler.py
@@ -22,7 +22,7 @@ Tests For Scheduler
import mox
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import rpcapi as compute_rpcapi
from nova.compute import task_states
@@ -435,11 +435,11 @@ class SchedulerTestCase(test.TestCase):
self.assertEqual(result, ['host2'])
def _live_migration_instance(self):
- inst_type = instance_types.get_instance_type(1)
+ inst_type = flavors.get_instance_type(1)
# NOTE(danms): we have _got_ to stop doing this!
inst_type['memory_mb'] = 1024
sys_meta = utils.dict_to_metadata(
- instance_types.save_instance_type_info({}, inst_type))
+ flavors.save_instance_type_info({}, inst_type))
return {'id': 31337,
'uuid': 'fake_uuid',
'name': 'fake-instance',
@@ -788,7 +788,7 @@ class SchedulerTestCase(test.TestCase):
# Confirm dest is picked by scheduler if not set.
self.mox.StubOutWithMock(self.driver, 'select_hosts')
- self.mox.StubOutWithMock(instance_types, 'extract_instance_type')
+ self.mox.StubOutWithMock(flavors, 'extract_instance_type')
request_spec = {'instance_properties': instance,
'instance_type': {},
@@ -799,7 +799,32 @@ class SchedulerTestCase(test.TestCase):
ignore_hosts = [instance['host']]
filter_properties = {'ignore_hosts': ignore_hosts}
- instance_types.extract_instance_type(instance).AndReturn({})
+ flavors.extract_instance_type(instance).AndReturn({})
+ self.driver.select_hosts(self.context, request_spec,
+ filter_properties).AndReturn(['fake_host2'])
+
+ self.mox.ReplayAll()
+ result = self.driver._live_migration_dest_check(self.context, instance,
+ None, ignore_hosts)
+ self.assertEqual('fake_host2', result)
+
+ def test_live_migration_dest_check_no_image(self):
+ instance = self._live_migration_instance()
+ instance['image_ref'] = ''
+
+ # Confirm dest is picked by scheduler if not set.
+ self.mox.StubOutWithMock(self.driver, 'select_hosts')
+ self.mox.StubOutWithMock(flavors, 'extract_instance_type')
+
+ request_spec = {'instance_properties': instance,
+ 'instance_type': {},
+ 'instance_uuids': [instance['uuid']],
+ 'image': None
+ }
+ ignore_hosts = [instance['host']]
+ filter_properties = {'ignore_hosts': ignore_hosts}
+
+ flavors.extract_instance_type(instance).AndReturn({})
self.driver.select_hosts(self.context, request_spec,
filter_properties).AndReturn(['fake_host2'])
@@ -812,7 +837,7 @@ class SchedulerTestCase(test.TestCase):
instance = self._live_migration_instance()
# Confirm scheduler picks target host if none given.
- self.mox.StubOutWithMock(instance_types, 'extract_instance_type')
+ self.mox.StubOutWithMock(flavors, 'extract_instance_type')
self.mox.StubOutWithMock(self.driver, '_live_migration_src_check')
self.mox.StubOutWithMock(self.driver, 'select_hosts')
self.mox.StubOutWithMock(self.driver, '_live_migration_common_check')
@@ -831,7 +856,7 @@ class SchedulerTestCase(test.TestCase):
self.driver._live_migration_src_check(self.context, instance)
- instance_types.extract_instance_type(
+ flavors.extract_instance_type(
instance).MultipleTimes().AndReturn({})
# First selected host raises exception.InvalidHypervisorType
diff --git a/nova/tests/servicegroup/test_zk_driver.py b/nova/tests/servicegroup/test_zk_driver.py
index cdb919307..eb6ddd4bf 100644
--- a/nova/tests/servicegroup/test_zk_driver.py
+++ b/nova/tests/servicegroup/test_zk_driver.py
@@ -36,13 +36,13 @@ class ZKServiceGroupTestCase(test.TestCase):
def setUp(self):
super(ZKServiceGroupTestCase, self).setUp()
servicegroup.API._driver = None
+ from nova.servicegroup.drivers import zk
+ self.flags(servicegroup_driver='zk')
+ self.flags(address='localhost:2181', group="zookeeper")
try:
- from nova.servicegroup.drivers import zk
_unused = zk.ZooKeeperDriver()
except ImportError:
self.skipTest("Unable to test due to lack of ZooKeeper")
- self.flags(servicegroup_driver='zk')
- self.flags(address='localhost:2181', group="zookeeper")
def test_join_leave(self):
self.servicegroup_api = servicegroup.API()
diff --git a/nova/tests/test_db_api.py b/nova/tests/test_db_api.py
index e298b7e03..13a1dedff 100644
--- a/nova/tests/test_db_api.py
+++ b/nova/tests/test_db_api.py
@@ -19,6 +19,7 @@
"""Unit tests for the DB API."""
+import copy
import datetime
import types
import uuid as stdlib_uuid
@@ -1023,6 +1024,34 @@ class DbApiTestCase(DbTestCase):
self.assertEqual(db.network_in_use_on_host(ctxt, 1, 'foo'), True)
self.assertEqual(db.network_in_use_on_host(ctxt, 1, 'bar'), False)
+ def test_instance_floating_address_get_all(self):
+ ctxt = context.get_admin_context()
+
+ instance1 = db.instance_create(ctxt, {'host': 'h1', 'hostname': 'n1'})
+ instance2 = db.instance_create(ctxt, {'host': 'h2', 'hostname': 'n2'})
+
+ fixed_addresses = ['1.1.1.1', '1.1.1.2', '1.1.1.3']
+ float_addresses = ['2.1.1.1', '2.1.1.2', '2.1.1.3']
+ instance_uuids = [instance1['uuid'], instance1['uuid'],
+ instance2['uuid']]
+
+ for fixed_addr, float_addr, instance_uuid in zip(fixed_addresses,
+ float_addresses,
+ instance_uuids):
+ db.fixed_ip_create(ctxt, {'address': fixed_addr,
+ 'instance_uuid': instance_uuid})
+ fixed_id = db.fixed_ip_get_by_address(ctxt, fixed_addr)['id']
+ db.floating_ip_create(ctxt,
+ {'address': float_addr,
+ 'fixed_ip_id': fixed_id})
+
+ real_float_addresses = \
+ db.instance_floating_address_get_all(ctxt, instance_uuids[0])
+ self.assertEqual(set(float_addresses[:2]), set(real_float_addresses))
+ real_float_addresses = \
+ db.instance_floating_address_get_all(ctxt, instance_uuids[2])
+ self.assertEqual(set([float_addresses[2]]), set(real_float_addresses))
+
def test_get_vol_mapping_non_admin(self):
ref = db.ec2_volume_create(self.context, 'fake-uuid')
ec2_id = db.get_ec2_volume_id_by_uuid(self.context, 'fake-uuid')
@@ -1099,67 +1128,6 @@ class DbApiTestCase(DbTestCase):
_compare(bw_usages[2], expected_bw_usages[2])
timeutils.clear_time_override()
- def test_key_pair_create(self):
- ctxt = context.get_admin_context()
- values = {'name': 'test_keypair', 'public_key': 'test-public-key',
- 'user_id': 'test_user_id', 'fingerprint': 'test_fingerprint'}
- keypair = db.key_pair_create(ctxt, values)
- self.assertNotEqual(None, keypair)
- for name, value in values.iteritems():
- self.assertEqual(keypair.get(name), value)
-
- def test_key_pair_create_with_duplicate_name(self):
- ctxt = context.get_admin_context()
- values = {'name': 'test_keypair', 'public_key': 'test-public-key',
- 'user_id': 'test_user_id', 'fingerprint': 'test_fingerprint'}
- keypair = db.key_pair_create(ctxt, values)
- self.assertRaises(exception.KeyPairExists,
- db.key_pair_create, ctxt, values)
-
- def test_admin_get_deleted_keypair(self):
- # Test deleted keypair can be read by admin user.
- ctxt = context.get_admin_context()
- values = {'name': 'test_keypair', 'public_key': 'test-public-key',
- 'user_id': 'test_user_id', 'fingerprint': 'test_fingerprint'}
- keypair = db.key_pair_create(ctxt, values)
- db.key_pair_destroy(ctxt, keypair['user_id'], keypair['name'])
-
- # Raise exception when read_deleted is 'no'.
- self.assertRaises(exception.KeypairNotFound, db.key_pair_get, ctxt,
- keypair['user_id'], keypair['name'])
- ctxt = ctxt.elevated(read_deleted='yes')
- db_keypair = db.key_pair_get(ctxt, keypair['user_id'],
- keypair['name'])
- self.assertEqual(db_keypair['name'], keypair['name'])
- self.assertEqual(db_keypair['deleted'], keypair['id'])
-
- def test_admin_get_all_keypairs_including_deleted(self):
- # Test all deleted/non-deleted keypairs can be read by admin user.
- ctxt = context.get_admin_context()
- keypair1_values = {'name': 'test_keypair1',
- 'public_key': 'test-public-key1',
- 'user_id': 'test_user_id',
- 'fingerprint': 'test_fingerprint1'}
- keypair2_values = {'name': 'test_keypair2',
- 'public_key': 'test-public-key2',
- 'user_id': 'test_user_id',
- 'fingerprint': 'test_fingerprint2'}
- keypair1 = db.key_pair_create(ctxt, keypair1_values)
- keypair2 = db.key_pair_create(ctxt, keypair2_values)
- db.key_pair_destroy(ctxt, keypair1['user_id'], keypair1['name'])
- db.key_pair_destroy(ctxt, keypair2['user_id'], keypair2['name'])
- # Returns non-deleted keypairs.
- result = db.key_pair_get_all_by_user(ctxt, keypair1['user_id'])
- self.assertEqual(result, [])
- ctxt = ctxt.elevated(read_deleted='yes')
- # Returns deleted and non-deleted keypairs.
- db_keypairs = db.key_pair_get_all_by_user(ctxt, keypair1['user_id'])
- expected_deleted_ids = [keypair1['id'], keypair2['id']]
- expected_keypair_names = [keypair1['name'], keypair2['name']]
- for keypair in db_keypairs:
- self.assertTrue(keypair['name'] in expected_keypair_names)
- self.assertTrue(keypair['deleted'] in expected_deleted_ids)
-
def _get_fake_aggr_values():
return {'name': 'fake_aggregate'}
@@ -2752,8 +2720,7 @@ class FloatingIpTestCase(test.TestCase, ModelsObjectComparatorMixin):
ctxt = context.RequestContext(user_id='a', project_id='abc',
is_admin=False)
self.assertRaises(exception.NotAuthorized,
- db.floating_ip_count_by_project,
- ctxt, 'def', 'does_not_matter')
+ db.floating_ip_count_by_project, ctxt, 'def')
def _create_fixed_ip(self, params):
default_params = {'address': '192.168.0.1'}
@@ -3344,6 +3311,22 @@ class BlockDeviceMappingTestCase(test.TestCase):
if bdm['device_name'] == values['device_name']:
return bdm
+ def test_scrub_empty_str_values_no_effect(self):
+ values = {'volume_size': 5}
+ expected = copy.copy(values)
+ sqlalchemy_api._scrub_empty_str_values(values, ['volume_size'])
+ self.assertEqual(values, expected)
+
+ def test_scrub_empty_str_values_empty_string(self):
+ values = {'volume_size': ''}
+ sqlalchemy_api._scrub_empty_str_values(values, ['volume_size'])
+ self.assertEqual(values, {})
+
+ def test_scrub_empty_str_values_empty_unicode(self):
+ values = {'volume_size': u''}
+ sqlalchemy_api._scrub_empty_str_values(values, ['volume_size'])
+ self.assertEqual(values, {})
+
def test_block_device_mapping_create(self):
bdm = self._create_bdm({})
self.assertFalse(bdm is None)
@@ -3588,6 +3571,114 @@ class VirtualInterfaceTestCase(test.TestCase, ModelsObjectComparatorMixin):
self._assertEqualListsOfObjects(vifs, real_vifs)
+class KeyPairTestCase(test.TestCase, ModelsObjectComparatorMixin):
+ def setUp(self):
+ super(KeyPairTestCase, self).setUp()
+ self.ctxt = context.get_admin_context()
+
+ def _create_key_pair(self, values):
+ return db.key_pair_create(self.ctxt, values)
+
+ def test_key_pair_create(self):
+ param = {
+ 'name': 'test_1',
+ 'user_id': 'test_user_id_1',
+ 'public_key': 'test_public_key_1',
+ 'fingerprint': 'test_fingerprint_1'
+ }
+ key_pair = self._create_key_pair(param)
+
+ self.assertTrue(key_pair['id'] is not None)
+ ignored_keys = ['deleted', 'created_at', 'updated_at',
+ 'deleted_at', 'id']
+ self._assertEqualObjects(key_pair, param, ignored_keys)
+
+ def test_key_pair_create_with_duplicate_name(self):
+ params = {'name': 'test_name', 'user_id': 'test_user_id'}
+ self._create_key_pair(params)
+ self.assertRaises(exception.KeyPairExists, self._create_key_pair,
+ params)
+
+ def test_key_pair_get(self):
+ params = [
+ {'name': 'test_1', 'user_id': 'test_user_id_1'},
+ {'name': 'test_2', 'user_id': 'test_user_id_2'},
+ {'name': 'test_3', 'user_id': 'test_user_id_3'}
+ ]
+ key_pairs = [self._create_key_pair(p) for p in params]
+
+ for key in key_pairs:
+ real_key = db.key_pair_get(self.ctxt, key['user_id'], key['name'])
+ self._assertEqualObjects(key, real_key)
+
+ def test_key_pair_get_no_results(self):
+ param = {'name': 'test_1', 'user_id': 'test_user_id_1'}
+ self.assertRaises(exception.KeypairNotFound, db.key_pair_get,
+ self.ctxt, param['user_id'], param['name'])
+
+ def test_key_pair_get_deleted(self):
+ param = {'name': 'test_1', 'user_id': 'test_user_id_1'}
+ key_pair_created = self._create_key_pair(param)
+
+ db.key_pair_destroy(self.ctxt, param['user_id'], param['name'])
+ self.assertRaises(exception.KeypairNotFound, db.key_pair_get,
+ self.ctxt, param['user_id'], param['name'])
+
+ ctxt = self.ctxt.elevated(read_deleted='yes')
+ key_pair_deleted = db.key_pair_get(ctxt, param['user_id'],
+ param['name'])
+ ignored_keys = ['deleted', 'created_at', 'updated_at', 'deleted_at']
+ self._assertEqualObjects(key_pair_deleted, key_pair_created,
+ ignored_keys)
+ self.assertEqual(key_pair_deleted['deleted'], key_pair_deleted['id'])
+
+ def test_key_pair_get_all_by_user(self):
+ params = [
+ {'name': 'test_1', 'user_id': 'test_user_id_1'},
+ {'name': 'test_2', 'user_id': 'test_user_id_1'},
+ {'name': 'test_3', 'user_id': 'test_user_id_2'}
+ ]
+ key_pairs_user_1 = [self._create_key_pair(p) for p in params
+ if p['user_id'] == 'test_user_id_1']
+ key_pairs_user_2 = [self._create_key_pair(p) for p in params
+ if p['user_id'] == 'test_user_id_2']
+
+ real_keys_1 = db.key_pair_get_all_by_user(self.ctxt, 'test_user_id_1')
+ real_keys_2 = db.key_pair_get_all_by_user(self.ctxt, 'test_user_id_2')
+
+ self._assertEqualListsOfObjects(key_pairs_user_1, real_keys_1)
+ self._assertEqualListsOfObjects(key_pairs_user_2, real_keys_2)
+
+ def test_key_pair_count_by_user(self):
+ params = [
+ {'name': 'test_1', 'user_id': 'test_user_id_1'},
+ {'name': 'test_2', 'user_id': 'test_user_id_1'},
+ {'name': 'test_3', 'user_id': 'test_user_id_2'}
+ ]
+ for p in params:
+ self._create_key_pair(p)
+
+ count_1 = db.key_pair_count_by_user(self.ctxt, 'test_user_id_1')
+ self.assertEqual(count_1, 2)
+
+ count_2 = db.key_pair_count_by_user(self.ctxt, 'test_user_id_2')
+ self.assertEqual(count_2, 1)
+
+ def test_key_pair_destroy(self):
+ param = {'name': 'test_1', 'user_id': 'test_user_id_1'}
+ self._create_key_pair(param)
+
+ db.key_pair_destroy(self.ctxt, param['user_id'], param['name'])
+ self.assertRaises(exception.KeypairNotFound, db.key_pair_get,
+ self.ctxt, param['user_id'], param['name'])
+
+ def test_key_pair_destroy_no_such_key(self):
+ param = {'name': 'test_1', 'user_id': 'test_user_id_1'}
+ self.assertRaises(exception.KeypairNotFound,
+ db.key_pair_destroy, self.ctxt,
+ param['user_id'], param['name'])
+
+
class ArchiveTestCase(test.TestCase):
def setUp(self):
diff --git a/nova/tests/test_hypervapi.py b/nova/tests/test_hypervapi.py
index 45466f783..82fcfb059 100644
--- a/nova/tests/test_hypervapi.py
+++ b/nova/tests/test_hypervapi.py
@@ -861,6 +861,9 @@ class HyperVAPITestCase(test.TestCase):
m.AndReturn(boot_from_volume)
if not boot_from_volume:
+ m = fake.PathUtils.get_instance_dir(mox.Func(self._check_vm_name))
+ m.AndReturn(self._test_instance_dir)
+
m = vhdutils.VHDUtils.get_vhd_info(mox.Func(self._check_img_path))
m.AndReturn({'MaxInternalSize': 1024})
@@ -883,10 +886,7 @@ class HyperVAPITestCase(test.TestCase):
# TODO(alexpilotti) Based on where the exception is thrown
# some of the above mock calls need to be skipped
if with_exception:
- m = vmutils.VMUtils.vm_exists(mox.Func(self._check_vm_name))
- m.AndReturn(True)
-
- vmutils.VMUtils.destroy_vm(mox.Func(self._check_vm_name))
+ self._setup_destroy_mocks()
else:
vmutils.VMUtils.set_vm_state(mox.Func(self._check_vm_name),
constants.HYPERV_VM_STATE_ENABLED)
@@ -904,9 +904,6 @@ class HyperVAPITestCase(test.TestCase):
config_drive=config_drive,
use_cdrom=use_cdrom)
- m = fake.PathUtils.get_instance_dir(mox.IsA(str))
- m.AndReturn(self._test_instance_dir)
-
self._mox.ReplayAll()
self._spawn_instance(cow)
self._mox.VerifyAll()
@@ -1046,95 +1043,120 @@ class HyperVAPITestCase(test.TestCase):
self.assertEquals(len(self._instance_volume_disks), 1)
def _setup_test_migrate_disk_and_power_off_mocks(self, same_host=False,
- with_exception=False):
+ copy_exception=False,
+ size_exception=False):
self._instance_data = self._get_instance_data()
instance = db.instance_create(self._context, self._instance_data)
network_info = fake_network.fake_get_instance_nw_info(
self.stubs, spectacular=True)
+ instance['root_gb'] = 10
+
fake_local_ip = '10.0.0.1'
if same_host:
fake_dest_ip = fake_local_ip
else:
fake_dest_ip = '10.0.0.2'
- fake_root_vhd_path = 'C:\\FakePath\\root.vhd'
- fake_revert_path = os.path.join(self._test_instance_dir, '_revert')
-
- func = mox.Func(self._check_instance_name)
- vmutils.VMUtils.set_vm_state(func, constants.HYPERV_VM_STATE_DISABLED)
+ if size_exception:
+ flavor = 'm1.tiny'
+ else:
+ flavor = 'm1.small'
- m = vmutils.VMUtils.get_vm_storage_paths(func)
- m.AndReturn(([fake_root_vhd_path], []))
+ instance_type = db.instance_type_get_by_name(self._context, flavor)
- m = hostutils.HostUtils.get_local_ips()
- m.AndReturn([fake_local_ip])
+ if not size_exception:
+ fake_root_vhd_path = 'C:\\FakePath\\root.vhd'
+ fake_revert_path = os.path.join(self._test_instance_dir, '_revert')
- m = fake.PathUtils.get_instance_dir(mox.IsA(str))
- m.AndReturn(self._test_instance_dir)
+ func = mox.Func(self._check_instance_name)
+ vmutils.VMUtils.set_vm_state(func,
+ constants.HYPERV_VM_STATE_DISABLED)
- m = pathutils.PathUtils.get_instance_migr_revert_dir(instance['name'],
- remove_dir=True)
- m.AndReturn(fake_revert_path)
+ m = vmutils.VMUtils.get_vm_storage_paths(func)
+ m.AndReturn(([fake_root_vhd_path], []))
- if same_host:
- fake.PathUtils.makedirs(mox.IsA(str))
+ m = hostutils.HostUtils.get_local_ips()
+ m.AndReturn([fake_local_ip])
- m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str))
- if with_exception:
- m.AndRaise(shutil.Error('Simulated copy error'))
- m = fake.PathUtils.get_instance_dir(mox.IsA(str),
- mox.IsA(str),
- remove_dir=True)
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str))
m.AndReturn(self._test_instance_dir)
- else:
- fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
- destroy_disks = True
- if same_host:
- fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
- destroy_disks = False
- self._setup_destroy_mocks(False)
+ m = pathutils.PathUtils.get_instance_migr_revert_dir(
+ instance['name'], remove_dir=True)
+ m.AndReturn(fake_revert_path)
+
+ if same_host:
+ fake.PathUtils.makedirs(mox.IsA(str))
- if destroy_disks:
+ m = fake.PathUtils.copy(fake_root_vhd_path, mox.IsA(str))
+ if copy_exception:
+ m.AndRaise(shutil.Error('Simulated copy error'))
m = fake.PathUtils.get_instance_dir(mox.IsA(str),
mox.IsA(str),
remove_dir=True)
m.AndReturn(self._test_instance_dir)
+ else:
+ fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
+ destroy_disks = True
+ if same_host:
+ fake.PathUtils.rename(mox.IsA(str), mox.IsA(str))
+ destroy_disks = False
+
+ self._setup_destroy_mocks(False)
- return (instance, fake_dest_ip, network_info)
+ if destroy_disks:
+ m = fake.PathUtils.get_instance_dir(mox.IsA(str),
+ mox.IsA(str),
+ remove_dir=True)
+ m.AndReturn(self._test_instance_dir)
+
+ return (instance, fake_dest_ip, network_info, instance_type)
def test_migrate_disk_and_power_off(self):
(instance,
fake_dest_ip,
- network_info) = self._setup_test_migrate_disk_and_power_off_mocks()
+ network_info,
+ instance_type) = self._setup_test_migrate_disk_and_power_off_mocks()
self._mox.ReplayAll()
self._conn.migrate_disk_and_power_off(self._context, instance,
- fake_dest_ip, None,
+ fake_dest_ip, instance_type,
network_info)
self._mox.VerifyAll()
def test_migrate_disk_and_power_off_same_host(self):
args = self._setup_test_migrate_disk_and_power_off_mocks(
same_host=True)
- (instance, fake_dest_ip, network_info) = args
+ (instance, fake_dest_ip, network_info, instance_type) = args
self._mox.ReplayAll()
self._conn.migrate_disk_and_power_off(self._context, instance,
- fake_dest_ip, None,
+ fake_dest_ip, instance_type,
network_info)
self._mox.VerifyAll()
- def test_migrate_disk_and_power_off_exception(self):
+ def test_migrate_disk_and_power_off_copy_exception(self):
args = self._setup_test_migrate_disk_and_power_off_mocks(
- with_exception=True)
- (instance, fake_dest_ip, network_info) = args
+ copy_exception=True)
+ (instance, fake_dest_ip, network_info, instance_type) = args
self._mox.ReplayAll()
self.assertRaises(shutil.Error, self._conn.migrate_disk_and_power_off,
- self._context, instance, fake_dest_ip, None,
- network_info)
+ self._context, instance, fake_dest_ip,
+ instance_type, network_info)
+ self._mox.VerifyAll()
+
+ def test_migrate_disk_and_power_off_smaller_root_vhd_size_exception(self):
+ args = self._setup_test_migrate_disk_and_power_off_mocks(
+ size_exception=True)
+ (instance, fake_dest_ip, network_info, instance_type) = args
+
+ self._mox.ReplayAll()
+ self.assertRaises(vmutils.VHDResizeException,
+ self._conn.migrate_disk_and_power_off,
+ self._context, instance, fake_dest_ip,
+ instance_type, network_info)
self._mox.VerifyAll()
def test_finish_migration(self):
diff --git a/nova/tests/test_imagebackend.py b/nova/tests/test_imagebackend.py
index d571bbf9e..b5d64a218 100644
--- a/nova/tests/test_imagebackend.py
+++ b/nova/tests/test_imagebackend.py
@@ -20,10 +20,11 @@ import os
import fixtures
from oslo.config import cfg
+from nova import exception
from nova.openstack.common import uuidutils
from nova import test
from nova.tests import fake_libvirt_utils
-from nova.tests import fake_utils
+from nova.tests import fake_processutils
from nova.virt.libvirt import imagebackend
CONF = cfg.CONF
@@ -130,8 +131,8 @@ class _ImageTestCase(object):
def test_prealloc_image(self):
CONF.set_override('preallocate_images', 'space')
- fake_utils.fake_execute_clear_log()
- fake_utils.stub_out_utils_execute(self.stubs)
+ fake_processutils.fake_execute_clear_log()
+ fake_processutils.stub_out_processutils_execute(self.stubs)
image = self.image_class(self.INSTANCE, self.NAME)
def fake_fetch(target, *args, **kwargs):
@@ -143,7 +144,7 @@ class _ImageTestCase(object):
image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE)
image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE)
- self.assertEqual(fake_utils.fake_execute_get_log(),
+ self.assertEqual(fake_processutils.fake_execute_get_log(),
['fallocate -n -l 1 %s.fallocate_test' % self.PATH,
'fallocate -n -l %s %s' % (self.SIZE, self.PATH),
'fallocate -n -l %s %s' % (self.SIZE, self.PATH)])
@@ -160,7 +161,7 @@ class RawTestCase(_ImageTestCase, test.TestCase):
def prepare_mocks(self):
fn = self.mox.CreateMockAnything()
- self.mox.StubOutWithMock(imagebackend.lockutils.synchronized,
+ self.mox.StubOutWithMock(imagebackend.utils.synchronized,
'__call__')
self.mox.StubOutWithMock(imagebackend.libvirt_utils, 'copy_image')
self.mox.StubOutWithMock(imagebackend.disk, 'extend')
@@ -229,7 +230,7 @@ class Qcow2TestCase(_ImageTestCase, test.TestCase):
def prepare_mocks(self):
fn = self.mox.CreateMockAnything()
- self.mox.StubOutWithMock(imagebackend.lockutils.synchronized,
+ self.mox.StubOutWithMock(imagebackend.utils.synchronized,
'__call__')
self.mox.StubOutWithMock(imagebackend.libvirt_utils,
'create_cow_image')
@@ -253,9 +254,12 @@ class Qcow2TestCase(_ImageTestCase, test.TestCase):
fn = self.prepare_mocks()
fn(target=self.TEMPLATE_PATH)
self.mox.StubOutWithMock(os.path, 'exists')
+ self.mox.StubOutWithMock(imagebackend.disk, 'get_disk_size')
if self.OLD_STYLE_INSTANCE_PATH:
os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False)
os.path.exists(self.TEMPLATE_PATH).AndReturn(False)
+ imagebackend.disk.get_disk_size(self.TEMPLATE_PATH
+ ).AndReturn(self.SIZE)
os.path.exists(self.PATH).AndReturn(False)
imagebackend.libvirt_utils.create_cow_image(self.TEMPLATE_PATH,
self.PATH)
@@ -267,6 +271,23 @@ class Qcow2TestCase(_ImageTestCase, test.TestCase):
self.mox.VerifyAll()
+ def test_create_image_too_small(self):
+ fn = self.prepare_mocks()
+ fn(target=self.TEMPLATE_PATH)
+ self.mox.StubOutWithMock(os.path, 'exists')
+ self.mox.StubOutWithMock(imagebackend.disk, 'get_disk_size')
+ if self.OLD_STYLE_INSTANCE_PATH:
+ os.path.exists(self.OLD_STYLE_INSTANCE_PATH).AndReturn(False)
+ os.path.exists(self.TEMPLATE_PATH).AndReturn(False)
+ imagebackend.disk.get_disk_size(self.TEMPLATE_PATH
+ ).AndReturn(self.SIZE)
+ self.mox.ReplayAll()
+
+ image = self.image_class(self.INSTANCE, self.NAME)
+ self.assertRaises(exception.ImageTooLarge, image.create_image, fn,
+ self.TEMPLATE_PATH, 1)
+ self.mox.VerifyAll()
+
class LvmTestCase(_ImageTestCase, test.TestCase):
VG = 'FakeVG'
@@ -406,8 +427,8 @@ class LvmTestCase(_ImageTestCase, test.TestCase):
def test_prealloc_image(self):
CONF.set_override('preallocate_images', 'space')
- fake_utils.fake_execute_clear_log()
- fake_utils.stub_out_utils_execute(self.stubs)
+ fake_processutils.fake_execute_clear_log()
+ fake_processutils.stub_out_processutils_execute(self.stubs)
image = self.image_class(self.INSTANCE, self.NAME)
def fake_fetch(target, *args, **kwargs):
@@ -417,7 +438,7 @@ class LvmTestCase(_ImageTestCase, test.TestCase):
image.cache(fake_fetch, self.TEMPLATE_PATH, self.SIZE)
- self.assertEqual(fake_utils.fake_execute_get_log(), [])
+ self.assertEqual(fake_processutils.fake_execute_get_log(), [])
class BackendTestCase(test.TestCase):
diff --git a/nova/tests/test_instance_types.py b/nova/tests/test_instance_types.py
index 5c8b4be14..e20845f1d 100644
--- a/nova/tests/test_instance_types.py
+++ b/nova/tests/test_instance_types.py
@@ -17,7 +17,7 @@ Unit Tests for instance types code
"""
import time
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import db
from nova.db.sqlalchemy import models
@@ -31,7 +31,7 @@ class InstanceTypeTestCase(test.TestCase):
def _generate_name(self):
"""return a name not in the DB."""
nonexistent_flavor = str(int(time.time()))
- flavors = instance_types.get_all_types()
+ flavors = flavors.get_all_types()
while nonexistent_flavor in flavors:
nonexistent_flavor += "z"
else:
@@ -41,7 +41,7 @@ class InstanceTypeTestCase(test.TestCase):
"""return a flavorid not in the DB."""
nonexistent_flavor = 2700
flavor_ids = [value["id"] for key, value in
- instance_types.get_all_types().iteritems()]
+ flavors.get_all_types().iteritems()]
while nonexistent_flavor in flavor_ids:
nonexistent_flavor += 1
else:
@@ -49,129 +49,16 @@ class InstanceTypeTestCase(test.TestCase):
def _existing_flavor(self):
"""return first instance type name."""
- return instance_types.get_all_types().keys()[0]
-
- def test_instance_type_create(self):
- # Ensure instance types can be created.
- name = 'Instance create test'
- flavor_id = '512'
-
- original_list = instance_types.get_all_types()
-
- # create new type and make sure values stick
- inst_type = instance_types.create(name, 256, 1, 120,
- flavorid=flavor_id)
- self.assertEqual(inst_type['flavorid'], flavor_id)
- self.assertEqual(inst_type['name'], name)
- self.assertEqual(inst_type['memory_mb'], 256)
- self.assertEqual(inst_type['vcpus'], 1)
- self.assertEqual(inst_type['root_gb'], 120)
- self.assertEqual(inst_type['ephemeral_gb'], 0)
- self.assertEqual(inst_type['swap'], 0)
- self.assertEqual(inst_type['rxtx_factor'], 1.0)
-
- # make sure new type shows up in list
- new_list = instance_types.get_all_types()
- self.assertNotEqual(len(original_list), len(new_list),
- 'instance type was not created')
-
- def test_instance_type_create_then_delete(self):
- # Ensure instance types can be created.
- name = 'Small Flavor'
- flavorid = 'flavor1'
-
- original_list = instance_types.get_all_types()
-
- # create new type and make sure values stick
- inst_type = instance_types.create(name, 256, 1, 120, 100, flavorid)
- inst_type_id = inst_type['id']
- self.assertEqual(inst_type['flavorid'], flavorid)
- self.assertEqual(inst_type['name'], name)
- self.assertEqual(inst_type['memory_mb'], 256)
- self.assertEqual(inst_type['vcpus'], 1)
- self.assertEqual(inst_type['root_gb'], 120)
- self.assertEqual(inst_type['ephemeral_gb'], 100)
- self.assertEqual(inst_type['swap'], 0)
- self.assertEqual(inst_type['rxtx_factor'], 1.0)
-
- # make sure new type shows up in list
- new_list = instance_types.get_all_types()
- self.assertNotEqual(len(original_list), len(new_list),
- 'instance type was not created')
-
- instance_types.destroy(name)
- self.assertRaises(exception.InstanceTypeNotFound,
- instance_types.get_instance_type, inst_type_id)
-
- # deleted instance should not be in list anymoer
- new_list = instance_types.get_all_types()
- self.assertEqual(original_list, new_list)
-
- def test_instance_type_create_without_flavorid(self):
- name = 'Small Flavor'
- inst_type = instance_types.create(name, 256, 1, 120, 100)
- self.assertNotEqual(inst_type['flavorid'], None)
- self.assertEqual(inst_type['name'], name)
- self.assertEqual(inst_type['memory_mb'], 256)
- self.assertEqual(inst_type['vcpus'], 1)
- self.assertEqual(inst_type['root_gb'], 120)
- self.assertEqual(inst_type['ephemeral_gb'], 100)
- self.assertEqual(inst_type['swap'], 0)
- self.assertEqual(inst_type['rxtx_factor'], 1.0)
-
- def test_instance_type_create_with_empty_flavorid(self):
- # Ensure that auto-generated uuid is assigned.
- name = 'Empty String ID Flavor'
- flavorid = ''
- inst_type = instance_types.create(name, 256, 1, 120, 100, flavorid)
- self.assertEqual(len(inst_type['flavorid']), 36)
- self.assertEqual(inst_type['name'], name)
- self.assertEqual(inst_type['memory_mb'], 256)
- self.assertEqual(inst_type['vcpus'], 1)
- self.assertEqual(inst_type['root_gb'], 120)
- self.assertEqual(inst_type['ephemeral_gb'], 100)
- self.assertEqual(inst_type['swap'], 0)
- self.assertEqual(inst_type['rxtx_factor'], 1.0)
-
- def test_instance_type_create_with_custom_rxtx_factor(self):
- name = 'Custom RXTX Factor'
- inst_type = instance_types.create(name, 256, 1, 120, 100,
- rxtx_factor=9.9)
- self.assertNotEqual(inst_type['flavorid'], None)
- self.assertEqual(inst_type['name'], name)
- self.assertEqual(inst_type['memory_mb'], 256)
- self.assertEqual(inst_type['vcpus'], 1)
- self.assertEqual(inst_type['root_gb'], 120)
- self.assertEqual(inst_type['ephemeral_gb'], 100)
- self.assertEqual(inst_type['swap'], 0)
- self.assertEqual(inst_type['rxtx_factor'], 9.9)
-
- def test_instance_type_create_with_special_characters(self):
- # Ensure instance types raises InvalidInput for invalid characters.
- name = "foo.bar!@#$%^-test_name"
- flavorid = "flavor1"
- self.assertRaises(exception.InvalidInput, instance_types.create,
- name, 256, 1, 120, 100, flavorid)
-
- def test_instance_type_create_with_long_flavor_name(self):
- # Flavor name with 255 characters or less is valid.
- name = 'a' * 255
- inst_type = instance_types.create(name, 64, 1, 120, flavorid=11)
- self.assertEqual(inst_type['name'], name)
-
- # Flavor name which is more than 255 characters will cause error.
- name = 'a' * 256
- self.assertRaises(exception.InvalidInput, instance_types.create,
- name, 64, 1, 120, flavorid=11)
+ return flavors.get_all_types().keys()[0]
def test_add_instance_type_access(self):
user_id = 'fake'
project_id = 'fake'
ctxt = context.RequestContext(user_id, project_id, is_admin=True)
flavor_id = 'flavor1'
- type_ref = instance_types.create('some flavor', 256, 1, 120, 100,
+ type_ref = flavors.create('some flavor', 256, 1, 120, 100,
flavorid=flavor_id)
- access_ref = instance_types.add_instance_type_access(flavor_id,
+ access_ref = flavors.add_instance_type_access(flavor_id,
project_id,
ctxt=ctxt)
self.assertEqual(access_ref["project_id"], project_id)
@@ -182,13 +69,13 @@ class InstanceTypeTestCase(test.TestCase):
project_id = 'fake'
ctxt = context.RequestContext(user_id, project_id, is_admin=True)
flavor_id = 'flavor1'
- type_ref = instance_types.create('some flavor', 256, 1, 120, 100,
+ type_ref = flavors.create('some flavor', 256, 1, 120, 100,
flavorid=flavor_id)
- access_ref = instance_types.add_instance_type_access(flavor_id,
+ access_ref = flavors.add_instance_type_access(flavor_id,
project_id,
ctxt=ctxt)
self.assertRaises(exception.FlavorAccessExists,
- instance_types.add_instance_type_access,
+ flavors.add_instance_type_access,
flavor_id, project_id, ctxt)
def test_add_instance_type_access_invalid_flavor(self):
@@ -197,7 +84,7 @@ class InstanceTypeTestCase(test.TestCase):
ctxt = context.RequestContext(user_id, project_id, is_admin=True)
flavor_id = 'no_such_flavor'
self.assertRaises(exception.FlavorNotFound,
- instance_types.add_instance_type_access,
+ flavors.add_instance_type_access,
flavor_id, project_id, ctxt)
def test_remove_instance_type_access(self):
@@ -205,13 +92,14 @@ class InstanceTypeTestCase(test.TestCase):
project_id = 'fake'
ctxt = context.RequestContext(user_id, project_id, is_admin=True)
flavor_id = 'flavor1'
- it = instance_types
- type_ref = it.create('some flavor', 256, 1, 120, 100,
+ type_ref = flavors.create('some flavor', 256, 1, 120, 100,
flavorid=flavor_id)
- access_ref = it.add_instance_type_access(flavor_id, project_id, ctxt)
- it.remove_instance_type_access(flavor_id, project_id, ctxt)
+ access_ref = flavors.add_instance_type_access(flavor_id, project_id,
+ ctxt)
+ flavors.remove_instance_type_access(flavor_id, project_id, ctxt)
- projects = it.get_instance_type_access_by_flavor_id(flavor_id, ctxt)
+ projects = flavors.get_instance_type_access_by_flavor_id(flavor_id,
+ ctxt)
self.assertEqual([], projects)
def test_remove_instance_type_access_doesnt_exists(self):
@@ -219,116 +107,73 @@ class InstanceTypeTestCase(test.TestCase):
project_id = 'fake'
ctxt = context.RequestContext(user_id, project_id, is_admin=True)
flavor_id = 'flavor1'
- type_ref = instance_types.create('some flavor', 256, 1, 120, 100,
+ type_ref = flavors.create('some flavor', 256, 1, 120, 100,
flavorid=flavor_id)
self.assertRaises(exception.FlavorAccessNotFound,
- instance_types.remove_instance_type_access,
+ flavors.remove_instance_type_access,
flavor_id, project_id, ctxt=ctxt)
def test_get_all_instance_types(self):
# Ensures that all instance types can be retrieved.
session = sql_session.get_session()
total_instance_types = session.query(models.InstanceTypes).count()
- inst_types = instance_types.get_all_types()
+ inst_types = flavors.get_all_types()
self.assertEqual(total_instance_types, len(inst_types))
- def test_invalid_create_args_should_fail(self):
- # Ensures that instance type creation fails with invalid args.
- invalid_sigs = [
- (('Zero memory', 0, 1, 10, 20, 'flavor1'), {}),
- (('Negative memory', -256, 1, 10, 20, 'flavor1'), {}),
- (('Non-integer memory', 'asdf', 1, 10, 20, 'flavor1'), {}),
-
- (('Zero vcpus', 256, 0, 10, 20, 'flavor1'), {}),
- (('Negative vcpus', 256, -1, 10, 20, 'flavor1'), {}),
- (('Non-integer vcpus', 256, 'a', 10, 20, 'flavor1'), {}),
-
- (('Negative storage', 256, 1, -1, 20, 'flavor1'), {}),
- (('Non-integer storage', 256, 1, 'a', 20, 'flavor1'), {}),
-
- (('Negative swap', 256, 1, 10, 20, 'flavor1'), {'swap': -1}),
- (('Non-integer swap', 256, 1, 10, 20, 'flavor1'), {'swap': -1}),
-
- (('Negative rxtx_factor', 256, 1, 10, 20, 'f1'),
- {'rxtx_factor': -1}),
- (('Non-integer rxtx_factor', 256, 1, 10, 20, 'f1'),
- {'rxtx_factor': "d"}),
- ]
-
- for (args, kwargs) in invalid_sigs:
- self.assertRaises(exception.InvalidInput,
- instance_types.create, *args, **kwargs)
-
def test_non_existent_inst_type_shouldnt_delete(self):
# Ensures that instance type creation fails with invalid args.
self.assertRaises(exception.InstanceTypeNotFoundByName,
- instance_types.destroy,
+ flavors.destroy,
'unknown_flavor')
- def test_duplicate_names_fail(self):
- # Ensures that name duplicates raise InstanceTypeCreateFailed.
- name = 'some_name'
- instance_types.create(name, 256, 1, 120, 200, 'flavor1')
- self.assertRaises(exception.InstanceTypeExists,
- instance_types.create,
- name, 256, 1, 120, 200, 'flavor2')
-
- def test_duplicate_flavorids_fail(self):
- # Ensures that flavorid duplicates raise InstanceTypeCreateFailed.
- flavorid = 'flavor1'
- instance_types.create('name one', 256, 1, 120, 200, flavorid)
- self.assertRaises(exception.InstanceTypeIdExists,
- instance_types.create,
- 'name two', 256, 1, 120, 200, flavorid)
-
def test_will_not_destroy_with_no_name(self):
# Ensure destroy said path of no name raises error.
self.assertRaises(exception.InstanceTypeNotFoundByName,
- instance_types.destroy, None)
+ flavors.destroy, None)
def test_will_not_get_bad_default_instance_type(self):
# ensures error raised on bad default instance type.
self.flags(default_instance_type='unknown_flavor')
self.assertRaises(exception.InstanceTypeNotFound,
- instance_types.get_default_instance_type)
+ flavors.get_default_instance_type)
def test_will_get_instance_type_by_id(self):
- default_instance_type = instance_types.get_default_instance_type()
+ default_instance_type = flavors.get_default_instance_type()
instance_type_id = default_instance_type['id']
- fetched = instance_types.get_instance_type(instance_type_id)
+ fetched = flavors.get_instance_type(instance_type_id)
self.assertEqual(default_instance_type, fetched)
def test_will_not_get_instance_type_by_unknown_id(self):
# Ensure get by name returns default flavor with no name.
self.assertRaises(exception.InstanceTypeNotFound,
- instance_types.get_instance_type, 10000)
+ flavors.get_instance_type, 10000)
def test_will_not_get_instance_type_with_bad_id(self):
# Ensure get by name returns default flavor with bad name.
self.assertRaises(exception.InstanceTypeNotFound,
- instance_types.get_instance_type, 'asdf')
+ flavors.get_instance_type, 'asdf')
def test_instance_type_get_by_None_name_returns_default(self):
# Ensure get by name returns default flavor with no name.
- default = instance_types.get_default_instance_type()
- actual = instance_types.get_instance_type_by_name(None)
+ default = flavors.get_default_instance_type()
+ actual = flavors.get_instance_type_by_name(None)
self.assertEqual(default, actual)
def test_will_not_get_instance_type_with_bad_name(self):
# Ensure get by name returns default flavor with bad name.
self.assertRaises(exception.InstanceTypeNotFound,
- instance_types.get_instance_type_by_name, 10000)
+ flavors.get_instance_type_by_name, 10000)
def test_will_not_get_instance_by_unknown_flavor_id(self):
# Ensure get by flavor raises error with wrong flavorid.
self.assertRaises(exception.FlavorNotFound,
- instance_types.get_instance_type_by_flavor_id,
+ flavors.get_instance_type_by_flavor_id,
'unknown_flavor')
def test_will_get_instance_by_flavor_id(self):
- default_instance_type = instance_types.get_default_instance_type()
+ default_instance_type = flavors.get_default_instance_type()
flavorid = default_instance_type['flavorid']
- fetched = instance_types.get_instance_type_by_flavor_id(flavorid)
+ fetched = flavors.get_instance_type_by_flavor_id(flavorid)
self.assertEqual(default_instance_type, fetched)
def test_can_read_deleted_types_using_flavor_id(self):
@@ -336,15 +181,15 @@ class InstanceTypeTestCase(test.TestCase):
inst_type_name = "test"
inst_type_flavor_id = "test1"
- inst_type = instance_types.create(inst_type_name, 256, 1, 120, 100,
+ inst_type = flavors.create(inst_type_name, 256, 1, 120, 100,
inst_type_flavor_id)
self.assertEqual(inst_type_name, inst_type["name"])
# NOTE(jk0): The deleted flavor will show up here because the context
# in get_instance_type_by_flavor_id() is set to use read_deleted by
# default.
- instance_types.destroy(inst_type["name"])
- deleted_inst_type = instance_types.get_instance_type_by_flavor_id(
+ flavors.destroy(inst_type["name"])
+ deleted_inst_type = flavors.get_instance_type_by_flavor_id(
inst_type_flavor_id)
self.assertEqual(inst_type_name, deleted_inst_type["name"])
@@ -354,11 +199,11 @@ class InstanceTypeTestCase(test.TestCase):
example when creating a server and attempting to translate from
flavorid to instance_type_id.
"""
- instance_types.create("instance_type1", 256, 1, 120, 100, "test1")
- instance_types.destroy("instance_type1")
- instance_types.create("instance_type1_redo", 256, 1, 120, 100, "test1")
+ flavors.create("instance_type1", 256, 1, 120, 100, "test1")
+ flavors.destroy("instance_type1")
+ flavors.create("instance_type1_redo", 256, 1, 120, 100, "test1")
- instance_type = instance_types.get_instance_type_by_flavor_id(
+ instance_type = flavors.get_instance_type_by_flavor_id(
"test1", read_deleted="no")
self.assertEqual("instance_type1_redo", instance_type["name"])
@@ -368,15 +213,15 @@ class InstanceTypeToolsTest(test.TestCase):
return [{'key': key, 'value': value} for key, value in data.items()]
def _test_extract_instance_type(self, prefix):
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
metadata = {}
- instance_types.save_instance_type_info(metadata, instance_type,
+ flavors.save_instance_type_info(metadata, instance_type,
prefix)
instance = {'system_metadata': self._dict_to_metadata(metadata)}
- _instance_type = instance_types.extract_instance_type(instance, prefix)
+ _instance_type = flavors.extract_instance_type(instance, prefix)
- props = instance_types.system_metadata_instance_type_props.keys()
+ props = flavors.system_metadata_instance_type_props.keys()
for key in instance_type.keys():
if key not in props:
del instance_type[key]
@@ -390,29 +235,29 @@ class InstanceTypeToolsTest(test.TestCase):
self._test_extract_instance_type('foo_')
def test_save_instance_type_info(self):
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
example = {}
example_prefix = {}
- for key in instance_types.system_metadata_instance_type_props.keys():
+ for key in flavors.system_metadata_instance_type_props.keys():
example['instance_type_%s' % key] = instance_type[key]
example_prefix['fooinstance_type_%s' % key] = instance_type[key]
metadata = {}
- instance_types.save_instance_type_info(metadata, instance_type)
+ flavors.save_instance_type_info(metadata, instance_type)
self.assertEqual(example, metadata)
metadata = {}
- instance_types.save_instance_type_info(metadata, instance_type, 'foo')
+ flavors.save_instance_type_info(metadata, instance_type, 'foo')
self.assertEqual(example_prefix, metadata)
def test_delete_instance_type_info(self):
- instance_type = instance_types.get_default_instance_type()
+ instance_type = flavors.get_default_instance_type()
metadata = {}
- instance_types.save_instance_type_info(metadata, instance_type)
- instance_types.save_instance_type_info(metadata, instance_type, '_')
- instance_types.delete_instance_type_info(metadata, '', '_')
+ flavors.save_instance_type_info(metadata, instance_type)
+ flavors.save_instance_type_info(metadata, instance_type, '_')
+ flavors.delete_instance_type_info(metadata, '', '_')
self.assertEqual(metadata, {})
@@ -451,3 +296,143 @@ class InstanceTypeFilteringTest(test.TestCase):
filters = dict(min_memory_mb=16384, min_root_gb=80)
expected = ['m1.xlarge']
self.assertFilterResults(filters, expected)
+
+
+class CreateInstanceTypeTest(test.TestCase):
+
+ def assertInvalidInput(self, *create_args, **create_kwargs):
+ self.assertRaises(exception.InvalidInput, flavors.create,
+ *create_args, **create_kwargs)
+
+ def test_name_with_special_characters(self):
+ # Names can contain [a-zA-Z0-9_.- ]
+ flavors.create('_foo.bar-123', 64, 1, 120)
+
+ # Ensure instance types raises InvalidInput for invalid characters.
+ self.assertInvalidInput('foobar#', 64, 1, 120)
+
+ def test_name_length_checks(self):
+ MAX_LEN = 255
+
+ # Flavor name with 255 characters or less is valid.
+ flavors.create('a' * MAX_LEN, 64, 1, 120)
+
+ # Flavor name which is more than 255 characters will cause error.
+ self.assertInvalidInput('a' * (MAX_LEN + 1), 64, 1, 120)
+
+ # Flavor name which is empty should cause an error
+ self.assertInvalidInput('', 64, 1, 120)
+
+ def test_memory_must_be_positive_integer(self):
+ self.assertInvalidInput('flavor1', 'foo', 1, 120)
+ self.assertInvalidInput('flavor1', -1, 1, 120)
+ self.assertInvalidInput('flavor1', 0, 1, 120)
+ flavors.create('flavor1', 1, 1, 120)
+
+ def test_vcpus_must_be_positive_integer(self):
+ self.assertInvalidInput('flavor`', 64, 'foo', 120)
+ self.assertInvalidInput('flavor1', 64, -1, 120)
+ self.assertInvalidInput('flavor1', 64, 0, 120)
+ flavors.create('flavor1', 64, 1, 120)
+
+ def test_root_gb_must_be_nonnegative_integer(self):
+ self.assertInvalidInput('flavor1', 64, 1, 'foo')
+ self.assertInvalidInput('flavor1', 64, 1, -1)
+ flavors.create('flavor1', 64, 1, 0)
+ flavors.create('flavor2', 64, 1, 120)
+
+ def test_swap_must_be_nonnegative_integer(self):
+ self.assertInvalidInput('flavor1', 64, 1, 120, swap='foo')
+ self.assertInvalidInput('flavor1', 64, 1, 120, swap=-1)
+ flavors.create('flavor1', 64, 1, 120, swap=0)
+ flavors.create('flavor2', 64, 1, 120, swap=1)
+
+ def test_rxtx_factor_must_be_positive_float(self):
+ self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor='foo')
+ self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor=-1.0)
+ self.assertInvalidInput('flavor1', 64, 1, 120, rxtx_factor=0.0)
+
+ flavor = flavors.create('flavor1', 64, 1, 120, rxtx_factor=1.0)
+ self.assertEqual(1.0, flavor['rxtx_factor'])
+
+ flavor = flavors.create('flavor2', 64, 1, 120, rxtx_factor=1.1)
+ self.assertEqual(1.1, flavor['rxtx_factor'])
+
+ def test_is_public_must_be_valid_bool_string(self):
+ self.assertInvalidInput('flavor1', 64, 1, 120, is_public='foo')
+
+ flavors.create('flavor1', 64, 1, 120, is_public='TRUE')
+ flavors.create('flavor2', 64, 1, 120, is_public='False')
+ flavors.create('flavor3', 64, 1, 120, is_public='Yes')
+ flavors.create('flavor4', 64, 1, 120, is_public='No')
+ flavors.create('flavor5', 64, 1, 120, is_public='Y')
+ flavors.create('flavor6', 64, 1, 120, is_public='N')
+ flavors.create('flavor7', 64, 1, 120, is_public='1')
+ flavors.create('flavor8', 64, 1, 120, is_public='0')
+ flavors.create('flavor9', 64, 1, 120, is_public='true')
+
+ def test_flavorid_populated(self):
+ flavor1 = flavors.create('flavor1', 64, 1, 120)
+ self.assertIsNot(None, flavor1['flavorid'])
+
+ flavor2 = flavors.create('flavor2', 64, 1, 120, flavorid='')
+ self.assertIsNot(None, flavor2['flavorid'])
+
+ flavor3 = flavors.create('flavor3', 64, 1, 120, flavorid='foo')
+ self.assertEqual('foo', flavor3['flavorid'])
+
+ def test_default_values(self):
+ flavor1 = flavors.create('flavor1', 64, 1, 120)
+
+ self.assertIsNot(None, flavor1['flavorid'])
+ self.assertEqual(flavor1['ephemeral_gb'], 0)
+ self.assertEqual(flavor1['swap'], 0)
+ self.assertEqual(flavor1['rxtx_factor'], 1.0)
+
+ def test_basic_create(self):
+ # Ensure instance types can be created.
+ original_list = flavors.get_all_types()
+
+ # Create new type and make sure values stick
+ flavor = flavors.create('flavor', 64, 1, 120)
+ self.assertEqual(flavor['name'], 'flavor')
+ self.assertEqual(flavor['memory_mb'], 64)
+ self.assertEqual(flavor['vcpus'], 1)
+ self.assertEqual(flavor['root_gb'], 120)
+
+ # Ensure new type shows up in list
+ new_list = flavors.get_all_types()
+ self.assertNotEqual(len(original_list), len(new_list),
+ 'flavor was not created')
+
+ def test_create_then_delete(self):
+ original_list = flavors.get_all_types()
+
+ flavor = flavors.create('flavor', 64, 1, 120)
+
+ # Ensure new type shows up in list
+ new_list = flavors.get_all_types()
+ self.assertNotEqual(len(original_list), len(new_list),
+ 'instance type was not created')
+
+ flavors.destroy('flavor')
+ self.assertRaises(exception.InstanceTypeNotFound,
+ flavors.get_instance_type, flavor['id'])
+
+ # Deleted instance should not be in list anymore
+ new_list = flavors.get_all_types()
+ self.assertEqual(original_list, new_list)
+
+ def test_duplicate_names_fail(self):
+ # Ensures that name duplicates raise InstanceTypeCreateFailed.
+ flavors.create('flavor', 256, 1, 120, 200, 'flavor1')
+ self.assertRaises(exception.InstanceTypeExists,
+ flavors.create,
+ 'flavor', 64, 1, 120)
+
+ def test_duplicate_flavorids_fail(self):
+ # Ensures that flavorid duplicates raise InstanceTypeCreateFailed.
+ flavors.create('flavor1', 64, 1, 120, flavorid='flavorid')
+ self.assertRaises(exception.InstanceTypeIdExists,
+ flavors.create,
+ 'flavor2', 64, 1, 120, flavorid='flavorid')
diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py
index a955d2f38..b482ea8c9 100644
--- a/nova/tests/test_libvirt.py
+++ b/nova/tests/test_libvirt.py
@@ -31,7 +31,7 @@ from oslo.config import cfg
from xml.dom import minidom
from nova.api.ec2 import cloud
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova.compute import vm_mode
@@ -320,7 +320,7 @@ class LibvirtConnTestCase(test.TestCase):
lambda *a, **k: self.conn)
instance_type = db.instance_type_get(self.context, 5)
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
nova.tests.image.fake.stub_out_image_service(self.stubs)
self.test_instance = {
@@ -1238,7 +1238,6 @@ class LibvirtConnTestCase(test.TestCase):
snapshot = image_service.show(context, recv_meta['id'])
self.assertIsNone(func_call_matcher.match())
self.assertEquals(snapshot['properties']['image_state'], 'available')
- self.assertEquals(snapshot['properties']['image_state'], 'available')
self.assertEquals(snapshot['status'], 'active')
self.assertEquals(snapshot['disk_format'], 'ami')
self.assertEquals(snapshot['name'], snapshot_name)
@@ -2557,7 +2556,7 @@ class LibvirtConnTestCase(test.TestCase):
instance_ref['image_ref'] = 123456 # we send an int to test sha1 call
instance_type = db.instance_type_get(self.context,
instance_ref['instance_type_id'])
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
instance_ref['system_metadata'] = sys_meta
instance = db.instance_create(self.context, instance_ref)
@@ -3735,6 +3734,38 @@ class LibvirtConnTestCase(test.TestCase):
conn.set_cache_mode(fake_conf)
self.assertEqual(fake_conf.driver_cache, 'fake')
+ def _test_shared_storage_detection(self, is_same):
+ conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
+ self.mox.StubOutWithMock(conn, 'get_host_ip_addr')
+ self.mox.StubOutWithMock(utils, 'execute')
+ self.mox.StubOutWithMock(os.path, 'exists')
+ self.mox.StubOutWithMock(os, 'unlink')
+ conn.get_host_ip_addr().AndReturn('bar')
+ utils.execute('ssh', 'foo', 'touch', mox.IgnoreArg())
+ os.path.exists(mox.IgnoreArg()).AndReturn(is_same)
+ if is_same:
+ os.unlink(mox.IgnoreArg())
+ else:
+ utils.execute('ssh', 'foo', 'rm', mox.IgnoreArg())
+ self.mox.ReplayAll()
+ return conn._is_storage_shared_with('foo', '/path')
+
+ def test_shared_storage_detection_same_host(self):
+ self.assertTrue(self._test_shared_storage_detection(True))
+
+ def test_shared_storage_detection_different_host(self):
+ self.assertFalse(self._test_shared_storage_detection(False))
+
+ def test_shared_storage_detection_easy(self):
+ conn = libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), True)
+ self.mox.StubOutWithMock(conn, 'get_host_ip_addr')
+ self.mox.StubOutWithMock(utils, 'execute')
+ self.mox.StubOutWithMock(os.path, 'exists')
+ self.mox.StubOutWithMock(os, 'unlink')
+ conn.get_host_ip_addr().AndReturn('foo')
+ self.mox.ReplayAll()
+ self.assertTrue(conn._is_storage_shared_with('foo', '/path'))
+
class HostStateTestCase(test.TestCase):
@@ -4724,8 +4755,8 @@ class LibvirtDriverTestCase(test.TestCase):
if not params:
params = {}
- sys_meta = instance_types.save_instance_type_info(
- {}, instance_types.get_instance_type_by_name('m1.tiny'))
+ sys_meta = flavors.save_instance_type_info(
+ {}, flavors.get_instance_type_by_name('m1.tiny'))
inst = {}
inst['image_ref'] = '1'
@@ -4733,7 +4764,7 @@ class LibvirtDriverTestCase(test.TestCase):
inst['launch_time'] = '10'
inst['user_id'] = 'fake'
inst['project_id'] = 'fake'
- type_id = instance_types.get_instance_type_by_name('m1.tiny')['id']
+ type_id = flavors.get_instance_type_by_name('m1.tiny')['id']
inst['instance_type_id'] = type_id
inst['ami_launch_index'] = 0
inst['host'] = 'host1'
@@ -4754,6 +4785,7 @@ class LibvirtDriverTestCase(test.TestCase):
.migrate_disk_and_power_off. """
self.counter = 0
+ self.checked_shared_storage = False
def fake_get_instance_disk_info(instance, xml=None):
return '[]'
@@ -4772,11 +4804,17 @@ class LibvirtDriverTestCase(test.TestCase):
def fake_os_path_exists(path):
return True
+ def fake_is_storage_shared(dest, inst_base):
+ self.checked_shared_storage = True
+ return False
+
self.stubs.Set(self.libvirtconnection, 'get_instance_disk_info',
fake_get_instance_disk_info)
self.stubs.Set(self.libvirtconnection, '_destroy', fake_destroy)
self.stubs.Set(self.libvirtconnection, 'get_host_ip_addr',
fake_get_host_ip_addr)
+ self.stubs.Set(self.libvirtconnection, '_is_storage_shared_with',
+ fake_is_storage_shared)
self.stubs.Set(utils, 'execute', fake_execute)
self.stubs.Set(os.path, 'exists', fake_os_path_exists)
@@ -5097,6 +5135,105 @@ class LibvirtDriverTestCase(test.TestCase):
self.libvirtconnection.get_instance_disk_info,
instance_name)
+ def test_get_cpuset_ids(self):
+ # correct syntax
+ self.flags(vcpu_pin_set="1")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1], cpuset_ids)
+
+ self.flags(vcpu_pin_set="1,2")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1, 2], cpuset_ids)
+
+ self.flags(vcpu_pin_set=", , 1 , ,, 2, ,")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1, 2], cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-1")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1], cpuset_ids)
+
+ self.flags(vcpu_pin_set=" 1 - 1, 1 - 2 , 1 -3")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1, 2, 3], cpuset_ids)
+
+ self.flags(vcpu_pin_set="1,^2")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1], cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-2, ^1")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([2], cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3,5,^2")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1, 3, 5], cpuset_ids)
+
+ self.flags(vcpu_pin_set=" 1 - 3 , ^2, 5")
+ cpuset_ids = self.libvirtconnection._get_cpuset_ids()
+ self.assertEqual([1, 3, 5], cpuset_ids)
+
+ # invalid syntax
+ self.flags(vcpu_pin_set=" -1-3,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3-,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="-3,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3,5,^2^")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3,5,^2-")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="--13,^^5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="a-3,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-a,5,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3,b,^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="1-3,5,^c")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="3 - 1, 5 , ^ 2 ")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set=" 1,1, ^1")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set=" 1,^1,^1,2, ^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
+ self.flags(vcpu_pin_set="^2")
+ self.assertRaises(exception.Invalid,
+ self.libvirtconnection._get_cpuset_ids)
+
class LibvirtVolumeUsageTestCase(test.TestCase):
"""Test for nova.virt.libvirt.libvirt_driver.LibvirtDriver
diff --git a/nova/tests/test_libvirt_blockinfo.py b/nova/tests/test_libvirt_blockinfo.py
index eef2deb50..aae5bec58 100644
--- a/nova/tests/test_libvirt_blockinfo.py
+++ b/nova/tests/test_libvirt_blockinfo.py
@@ -16,7 +16,7 @@
# under the License.
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import db
from nova import exception
@@ -34,7 +34,7 @@ class LibvirtBlockInfoTest(test.TestCase):
self.project_id = 'fake'
self.context = context.get_admin_context()
instance_type = db.instance_type_get(self.context, 2)
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
nova.tests.image.fake.stub_out_image_service(self.stubs)
self.test_instance = {
'uuid': '32dfcb37-5af1-552b-357c-be8c3aa38310',
diff --git a/nova/tests/test_libvirt_config.py b/nova/tests/test_libvirt_config.py
index f98e6dd51..8eed7136e 100644
--- a/nova/tests/test_libvirt_config.py
+++ b/nova/tests/test_libvirt_config.py
@@ -699,6 +699,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
obj.virt_type = "lxc"
obj.memory = 1024 * 1024 * 100
obj.vcpus = 2
+ obj.cpuset = "0-3,^2,4-5"
obj.name = "demo"
obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147"
obj.os_type = "exe"
@@ -716,7 +717,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
<uuid>b38a3f43-4be2-4046-897f-b67c2f5e0147</uuid>
<name>demo</name>
<memory>104857600</memory>
- <vcpu>2</vcpu>
+ <vcpu cpuset="0-3,^2,4-5">2</vcpu>
<os>
<type>exe</type>
<init>/sbin/init</init>
@@ -734,6 +735,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
obj.virt_type = "xen"
obj.memory = 1024 * 1024 * 100
obj.vcpus = 2
+ obj.cpuset = "0-3,^2,4-5"
obj.name = "demo"
obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147"
obj.os_type = "linux"
@@ -756,7 +758,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
<uuid>b38a3f43-4be2-4046-897f-b67c2f5e0147</uuid>
<name>demo</name>
<memory>104857600</memory>
- <vcpu>2</vcpu>
+ <vcpu cpuset="0-3,^2,4-5">2</vcpu>
<os>
<type>linux</type>
<kernel>/tmp/vmlinuz</kernel>
@@ -777,6 +779,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
obj.virt_type = "xen"
obj.memory = 1024 * 1024 * 100
obj.vcpus = 2
+ obj.cpuset = "0-3,^2,4-5"
obj.name = "demo"
obj.uuid = "b38a3f43-4be2-4046-897f-b67c2f5e0147"
obj.os_type = "hvm"
@@ -800,7 +803,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
<uuid>b38a3f43-4be2-4046-897f-b67c2f5e0147</uuid>
<name>demo</name>
<memory>104857600</memory>
- <vcpu>2</vcpu>
+ <vcpu cpuset="0-3,^2,4-5">2</vcpu>
<os>
<type>hvm</type>
<loader>/usr/lib/xen/boot/hvmloader</loader>
@@ -824,6 +827,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
obj.virt_type = "kvm"
obj.memory = 1024 * 1024 * 100
obj.vcpus = 2
+ obj.cpuset = "0-3,^2,4-5"
obj.cpu_shares = 100
obj.cpu_quota = 50000
obj.cpu_period = 25000
@@ -853,7 +857,7 @@ class LibvirtConfigGuestTest(LibvirtConfigBaseTest):
<uuid>b38a3f43-4be2-4046-897f-b67c2f5e0147</uuid>
<name>demo</name>
<memory>104857600</memory>
- <vcpu>2</vcpu>
+ <vcpu cpuset="0-3,^2,4-5">2</vcpu>
<sysinfo type='smbios'>
<bios>
<entry name="vendor">Acme</entry>
diff --git a/nova/tests/test_metadata.py b/nova/tests/test_metadata.py
index 01f274f7c..86d618930 100644
--- a/nova/tests/test_metadata.py
+++ b/nova/tests/test_metadata.py
@@ -37,7 +37,7 @@ from nova.api.metadata import base
from nova.api.metadata import handler
from nova.api.metadata import password
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.conductor import api as conductor_api
from nova import db
from nova.db.sqlalchemy import api
@@ -77,8 +77,8 @@ INSTANCES = (
def get_default_sys_meta():
return utils.dict_to_metadata(
- instance_types.save_instance_type_info(
- {}, instance_types.get_default_instance_type()))
+ flavors.save_instance_type_info(
+ {}, flavors.get_default_instance_type()))
def return_non_existing_address(*args, **kwarg):
diff --git a/nova/tests/test_migration_utils.py b/nova/tests/test_migration_utils.py
index 1096be0d3..d6e1ee568 100644
--- a/nova/tests/test_migration_utils.py
+++ b/nova/tests/test_migration_utils.py
@@ -18,16 +18,25 @@
from migrate.changeset import UniqueConstraint
from sqlalchemy import Integer, DateTime, String
from sqlalchemy import MetaData, Table, Column
+from sqlalchemy.exc import NoSuchTableError
+from sqlalchemy.exc import OperationalError
from sqlalchemy.exc import SAWarning
from sqlalchemy.sql import select
from sqlalchemy.types import UserDefinedType
+from nova.db.sqlalchemy import api as db
from nova.db.sqlalchemy import utils
from nova import exception
from nova.tests import test_migrations
import warnings
+class CustomType(UserDefinedType):
+ """Dummy column type for testing unsupported types."""
+ def get_col_spec(self):
+ return "CustomType"
+
+
class TestMigrationUtils(test_migrations.BaseMigrationTestCase):
"""Class for testing utils that are used in db migrations."""
@@ -75,11 +84,6 @@ class TestMigrationUtils(test_migrations.BaseMigrationTestCase):
def test_util_drop_unique_constraint_with_not_supported_sqlite_type(self):
- class CustomType(UserDefinedType):
- """Dummy column type for testing unsupported types."""
- def get_col_spec(self):
- return "CustomType"
-
table_name = "__test_tmp_table__"
uc_name = 'uniq_foo'
values = [
@@ -235,3 +239,155 @@ class TestMigrationUtils(test_migrations.BaseMigrationTestCase):
len(values) - len(row_ids))
for value in soft_deleted_values:
self.assertTrue(value['id'] in deleted_rows_ids)
+
+ def test_check_shadow_table(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('c', String(256)))
+ table.create()
+
+ #check missing shadow table
+ self.assertRaises(NoSuchTableError,
+ utils.check_shadow_table, engine, table_name)
+
+ shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta,
+ Column('id', Integer),
+ Column('a', Integer))
+ shadow_table.create()
+
+ # check missing column
+ self.assertRaises(exception.NovaException,
+ utils.check_shadow_table, engine, table_name)
+
+ # check when all is ok
+ c = Column('c', String(256))
+ shadow_table.create_column(c)
+ self.assertTrue(utils.check_shadow_table(engine, table_name))
+
+ # check extra column
+ d = Column('d', Integer)
+ shadow_table.create_column(d)
+ self.assertRaises(exception.NovaException,
+ utils.check_shadow_table, engine, table_name)
+
+ def test_check_shadow_table_different_types(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer))
+ table.create()
+
+ shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', String(256)))
+ shadow_table.create()
+ self.assertRaises(exception.NovaException,
+ utils.check_shadow_table, engine, table_name)
+
+ def test_check_shadow_table_with_unsupported_type(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('c', CustomType))
+ table.create()
+
+ shadow_table = Table(db._SHADOW_TABLE_PREFIX + table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('c', CustomType))
+ shadow_table.create()
+ self.assertTrue(utils.check_shadow_table(engine, table_name))
+
+ def test_create_shadow_table_by_table_instance(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('b', String(256)))
+ table.create()
+ utils.create_shadow_table(engine, table=table)
+ self.assertTrue(utils.check_shadow_table(engine, table_name))
+
+ def test_create_shadow_table_by_name(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer),
+ Column('b', String(256)))
+ table.create()
+ utils.create_shadow_table(engine, table_name=table_name)
+ self.assertTrue(utils.check_shadow_table(engine, table_name))
+
+ def test_create_shadow_table_not_supported_type(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', CustomType))
+ table.create()
+ self.assertRaises(exception.NovaException,
+ utils.create_shadow_table,
+ engine, table_name=table_name)
+
+ utils.create_shadow_table(engine, table_name=table_name,
+ a=Column('a', CustomType()))
+ self.assertTrue(utils.check_shadow_table(engine, table_name))
+
+ def test_create_shadow_both_table_and_table_name_are_none(self):
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+ self.assertRaises(exception.NovaException,
+ utils.create_shadow_table, engine)
+
+ def test_create_shadow_both_table_and_table_name_are_specified(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer))
+ table.create()
+ self.assertRaises(exception.NovaException,
+ utils.create_shadow_table,
+ engine, table=table, table_name=table_name)
+
+ def test_create_duplicate_shadow_table(self):
+ table_name = 'abc'
+ for key, engine in self.engines.items():
+ meta = MetaData()
+ meta.bind = engine
+ table = Table(table_name, meta,
+ Column('id', Integer, primary_key=True),
+ Column('a', Integer))
+ table.create()
+ utils.create_shadow_table(engine, table_name=table_name)
+ self.assertRaises(OperationalError,
+ utils.create_shadow_table,
+ engine, table_name=table_name)
diff --git a/nova/tests/test_migrations.py b/nova/tests/test_migrations.py
index a0f71b25a..d7ef3da2f 100644
--- a/nova/tests/test_migrations.py
+++ b/nova/tests/test_migrations.py
@@ -56,11 +56,13 @@ from sqlalchemy.dialects import postgresql
from sqlalchemy.dialects import sqlite
import sqlalchemy.exc
+from nova.db.sqlalchemy import api as db
import nova.db.sqlalchemy.migrate_repo
-from nova.openstack.common import lockutils
+from nova.db.sqlalchemy import utils as db_utils
from nova.openstack.common import log as logging
from nova.openstack.common import timeutils
from nova import test
+from nova import utils
import nova.virt.baremetal.db.sqlalchemy.migrate_repo
@@ -112,16 +114,6 @@ def _have_postgresql(user, passwd, database):
return present.lower() in ('', 'true')
-def get_table(engine, name):
- """Returns an sqlalchemy table dynamically from db.
-
- Needed because the models don't work for us in migrations
- as models will be far out of sync with the current data."""
- metadata = sqlalchemy.schema.MetaData()
- metadata.bind = engine
- return sqlalchemy.Table(name, metadata, autoload=True)
-
-
def get_mysql_connection_info(conn_pieces):
database = conn_pieces.path.strip('/')
loc_pieces = conn_pieces.netloc.split('@')
@@ -254,7 +246,7 @@ class BaseMigrationTestCase(test.TestCase):
self.assertEqual(0, status,
"Failed to run: %s\n%s" % (cmd, output))
- @lockutils.synchronized('pgadmin', 'nova-', external=True)
+ @utils.synchronized('pgadmin', external=True)
def _reset_pg(self, conn_pieces):
(user, password, database, host) = \
get_pgsql_connection_info(conn_pieces)
@@ -509,12 +501,12 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
'bw_out': 0,
}]
- bw_usage_cache = get_table(engine, 'bw_usage_cache')
+ bw_usage_cache = db_utils.get_table(engine, 'bw_usage_cache')
engine.execute(bw_usage_cache.insert(), data)
return data
def _check_134(self, engine, data):
- bw_usage_cache = get_table(engine, 'bw_usage_cache')
+ bw_usage_cache = db_utils.get_table(engine, 'bw_usage_cache')
# Checks if both columns have been successfuly created.
self.assertIn('last_ctr_in', bw_usage_cache.c)
@@ -538,14 +530,14 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
data = {
'instance_uuid': str(uuid.uuid4())
}
- migrations = get_table(engine, 'migrations')
+ migrations = db_utils.get_table(engine, 'migrations')
engine.execute(migrations.insert(), data)
result = migrations.insert().values(data).execute()
data['id'] = result.inserted_primary_key[0]
return data
def _check_141(self, engine, data):
- migrations = get_table(engine, 'migrations')
+ migrations = db_utils.get_table(engine, 'migrations')
row = migrations.select(
migrations.c.id == data['id']).execute().first()
# Check that change to String(36) went alright
@@ -558,7 +550,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
'name': 'name',
}
- aggregates = get_table(engine, 'aggregates')
+ aggregates = db_utils.get_table(engine, 'aggregates')
result = aggregates.insert().values(data).execute()
# NOTE(sdague) it's important you don't insert keys by value in
# postgresql, because its autoincrement counter won't get updated
@@ -566,14 +558,14 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_146(self, engine, data):
- aggregate_md = get_table(engine, 'aggregate_metadata')
+ aggregate_md = db_utils.get_table(engine, 'aggregate_metadata')
md = aggregate_md.select(
aggregate_md.c.aggregate_id == data['id']).execute().first()
self.assertEqual(data['availability_zone'], md['value'])
def _post_downgrade_146(self, engine):
# Downgrade should delete availability_zone aggregate_metadata entries
- aggregate_md = get_table(engine, 'aggregate_metadata')
+ aggregate_md = db_utils.get_table(engine, 'aggregate_metadata')
num_azs = aggregate_md.count().where(
aggregate_md.c.key == 'availability_zone').execute().scalar()
self.assertEqual(0, num_azs)
@@ -596,29 +588,30 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
'report_count': 0, 'availability_zone': az},
]
- services = get_table(engine, 'services')
+ services = db_utils.get_table(engine, 'services')
engine.execute(services.insert(), data)
self._pre_upgrade_147_no_duplicate_aggregate_hosts(engine)
return data
def _pre_upgrade_147_no_duplicate_aggregate_hosts(self, engine):
- engine.execute(get_table(engine, 'aggregate_metadata').insert(), [
- {'aggregate_id': 1,
- 'key': 'availability_zone',
- 'value': 'custom_az'}])
+ engine.execute(
+ db_utils.get_table(engine, 'aggregate_metadata').insert(),
+ [{'aggregate_id': 1,
+ 'key': 'availability_zone',
+ 'value': 'custom_az'}])
- engine.execute(get_table(engine, 'aggregate_hosts').insert(), [
- {'aggregate_id': 1,
- 'host': 'compute-host3'}])
+ engine.execute(db_utils.get_table(engine, 'aggregate_hosts').insert(),
+ [{'aggregate_id': 1,
+ 'host': 'compute-host3'}])
- engine.execute(get_table(engine, 'services').insert(), [
- {'id': 99, 'host': 'compute-host3',
- 'binary': 'nova-compute', 'topic': 'compute',
- 'report_count': 0, 'availability_zone': 'custom_az'}])
+ engine.execute(db_utils.get_table(engine, 'services').insert(),
+ [{'id': 99, 'host': 'compute-host3',
+ 'binary': 'nova-compute', 'topic': 'compute',
+ 'report_count': 0, 'availability_zone': 'custom_az'}])
def _check_147(self, engine, data):
- aggregate_md = get_table(engine, 'aggregate_metadata')
- aggregate_hosts = get_table(engine, 'aggregate_hosts')
+ aggregate_md = db_utils.get_table(engine, 'aggregate_metadata')
+ aggregate_hosts = db_utils.get_table(engine, 'aggregate_hosts')
# NOTE(sdague): hard coded to id == 2, because we added to
# aggregate_metadata previously
for item in data:
@@ -641,7 +634,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self._check_147_no_duplicate_aggregate_hosts(engine, data)
def _check_147_no_duplicate_aggregate_hosts(self, engine, data):
- aggregate_hosts = get_table(engine, 'aggregate_hosts')
+ aggregate_hosts = db_utils.get_table(engine, 'aggregate_hosts')
agg1_hosts = [h['host'] for h in aggregate_hosts.select(
aggregate_hosts.c.aggregate_id == 1
).execute().fetchall()]
@@ -649,8 +642,8 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# migration 149, changes IPAddr storage format
def _pre_upgrade_149(self, engine):
- provider_fw_rules = get_table(engine, 'provider_fw_rules')
- console_pools = get_table(engine, 'console_pools')
+ provider_fw_rules = db_utils.get_table(engine, 'provider_fw_rules')
+ console_pools = db_utils.get_table(engine, 'console_pools')
data = {
'provider_fw_rules':
[
@@ -687,7 +680,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_149(self, engine, data):
- provider_fw_rules = get_table(engine, 'provider_fw_rules')
+ provider_fw_rules = db_utils.get_table(engine, 'provider_fw_rules')
result = provider_fw_rules.select().execute()
iplist = map(lambda x: str(netaddr.IPNetwork(x['cidr'])),
@@ -696,7 +689,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
for row in result:
self.assertIn(str(netaddr.IPNetwork(row['cidr'])), iplist)
- console_pools = get_table(engine, 'console_pools')
+ console_pools = db_utils.get_table(engine, 'console_pools')
result = console_pools.select().execute()
iplist = map(lambda x: str(netaddr.IPAddress(x['address'])),
@@ -707,7 +700,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# migration 151 - changes period_beginning and period_ending to DateTime
def _pre_upgrade_151(self, engine):
- task_log = get_table(engine, 'task_log')
+ task_log = db_utils.get_table(engine, 'task_log')
data = {
'task_name': 'The name of the task',
'state': 'The state of the task',
@@ -721,7 +714,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_151(self, engine, data):
- task_log = get_table(engine, 'task_log')
+ task_log = db_utils.get_table(engine, 'task_log')
row = task_log.select(task_log.c.id == data['id']).execute().first()
self.assertTrue(isinstance(row['period_beginning'],
datetime.datetime))
@@ -748,21 +741,21 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
{'id': 'second', 'host': host2, 'deleted': True}
]
- services = get_table(engine, 'services')
+ services = db_utils.get_table(engine, 'services')
engine.execute(services.insert(), services_data)
- volumes = get_table(engine, 'volumes')
+ volumes = db_utils.get_table(engine, 'volumes')
engine.execute(volumes.insert(), volumes_data)
return dict(services=services_data, volumes=volumes_data)
def _check_152(self, engine, data):
- services = get_table(engine, 'services')
+ services = db_utils.get_table(engine, 'services')
service = services.select(services.c.id == 4).execute().first()
self.assertEqual(0, service.deleted)
service = services.select(services.c.id == 5).execute().first()
self.assertEqual(service.id, service.deleted)
- volumes = get_table(engine, 'volumes')
+ volumes = db_utils.get_table(engine, 'volumes')
volume = volumes.select(volumes.c.id == "first").execute().first()
self.assertEqual("", volume.deleted)
volume = volumes.select(volumes.c.id == "second").execute().first()
@@ -801,8 +794,8 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# NOTE(danms): no use of type5
]
- instances = get_table(engine, 'instances')
- instance_types = get_table(engine, 'instance_types')
+ instances = db_utils.get_table(engine, 'instances')
+ instance_types = db_utils.get_table(engine, 'instance_types')
engine.execute(instance_types.insert(), fake_types)
engine.execute(instances.insert(), fake_instances)
@@ -811,9 +804,9 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
def _check_153(self, engine, data):
fake_types, fake_instances = data
# NOTE(danms): Fetch all the tables and data from scratch after change
- instances = get_table(engine, 'instances')
- instance_types = get_table(engine, 'instance_types')
- sys_meta = get_table(engine, 'instance_system_metadata')
+ instances = db_utils.get_table(engine, 'instances')
+ instance_types = db_utils.get_table(engine, 'instance_types')
+ sys_meta = db_utils.get_table(engine, 'instance_system_metadata')
# Collect all system metadata, indexed by instance_uuid
metadata = collections.defaultdict(dict)
@@ -855,16 +848,16 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
meta.reflect(engine)
table_names = set(meta.tables.keys())
for table_name in table_names:
- if table_name.startswith("shadow_"):
+ if table_name.startswith(db._SHADOW_TABLE_PREFIX):
shadow_name = table_name
- base_name = table_name.replace("shadow_", "")
+ base_name = table_name.replace(db._SHADOW_TABLE_PREFIX, "")
self.assertIn(base_name, table_names)
else:
base_name = table_name
- shadow_name = "shadow_" + table_name
+ shadow_name = db._SHADOW_TABLE_PREFIX + table_name
self.assertIn(shadow_name, table_names)
- shadow_table = get_table(engine, shadow_name)
- base_table = get_table(engine, base_name)
+ shadow_table = db_utils.get_table(engine, shadow_name)
+ base_table = db_utils.get_table(engine, base_name)
base_columns = []
shadow_columns = []
for column in base_table.columns:
@@ -922,7 +915,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self._check_149(engine, data)
def _pre_upgrade_158(self, engine):
- networks = get_table(engine, 'networks')
+ networks = db_utils.get_table(engine, 'networks')
data = [
{'vlan': 1, 'deleted': 0},
{'vlan': 1, 'deleted': 0},
@@ -934,7 +927,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_158(self, engine, data):
- networks = get_table(engine, 'networks')
+ networks = db_utils.get_table(engine, 'networks')
rows = networks.select().\
where(networks.c.deleted != networks.c.id).\
execute().\
@@ -977,7 +970,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# NOTE(maurosr): check if column length is 39 again (it currently makes
# sense only for mysql)
if dialect not in [postgresql.dialect, sqlite.dialect]:
- console_pools = get_table(engine, 'console_pools')
+ console_pools = db_utils.get_table(engine, 'console_pools')
self.assertEqual(console_pools.columns['address'].type.length, 39)
# recheck the 149 data
self._check_149(engine, data)
@@ -987,7 +980,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# NOTE(maurosr): check if column length is 43 again (it currently makes
# sense only for mysql)
if dialect not in [postgresql.dialect, sqlite.dialect]:
- console_pools = get_table(engine, 'console_pools')
+ console_pools = db_utils.get_table(engine, 'console_pools')
self.assertEqual(console_pools.columns['address'].type.length, 43)
# migration 160, fix system_metadata NULL deleted entries to be 0
@@ -1002,8 +995,8 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
dict(instance_uuid='m160-uuid2', key='foo2', value='bar2'),
dict(instance_uuid='m160-uuid3', key='foo3', value='bar3')]
- instances = get_table(engine, 'instances')
- sys_meta = get_table(engine, 'instance_system_metadata')
+ instances = db_utils.get_table(engine, 'instances')
+ sys_meta = db_utils.get_table(engine, 'instance_system_metadata')
engine.execute(instances.insert(), fake_instances)
# Create the metadata entries
@@ -1025,7 +1018,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
def _check_160(self, engine, data):
our_ids = data.keys()
- sys_meta = get_table(engine, 'instance_system_metadata')
+ sys_meta = db_utils.get_table(engine, 'instance_system_metadata')
results = sys_meta.select().where(sys_meta.c.id.in_(our_ids)).\
execute()
results = list(results)
@@ -1056,8 +1049,8 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
dict(sm_base, key='instance_type_baz', created_at=now),
]
- instances = get_table(engine, 'instances')
- sys_meta = get_table(engine, 'instance_system_metadata')
+ instances = db_utils.get_table(engine, 'instances')
+ sys_meta = db_utils.get_table(engine, 'instance_system_metadata')
engine.execute(instances.insert(), fake_instances)
data = {}
@@ -1070,7 +1063,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
def _check_161(self, engine, data):
our_ids = data.keys()
- sys_meta = get_table(engine, 'instance_system_metadata')
+ sys_meta = db_utils.get_table(engine, 'instance_system_metadata')
results = sys_meta.select().where(sys_meta.c.id.in_(our_ids)).\
execute()
results = list(results)
@@ -1107,7 +1100,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertEqual(result['created_at'], None)
def _pre_upgrade_172(self, engine):
- instance_types = get_table(engine, 'instance_types')
+ instance_types = db_utils.get_table(engine, 'instance_types')
data = [
dict(id=21, name='uc_name0', memory_mb=128, vcpus=1,
root_gb=10, ephemeral_gb=0, flavorid="uc_flavor1", swap=0,
@@ -1130,7 +1123,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_172(self, engine, data):
- instance_types = get_table(engine, 'instance_types')
+ instance_types = db_utils.get_table(engine, 'instance_types')
not_deleted = instance_types.c.deleted != instance_types.c.id
@@ -1164,12 +1157,12 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
created_at=created_at[2],
deleted=0)
]
- keypairs = get_table(engine, 'key_pairs')
+ keypairs = db_utils.get_table(engine, 'key_pairs')
engine.execute(keypairs.insert(), fake_keypairs)
return fake_keypairs
def _check_173(self, engine, data):
- keypairs = get_table(engine, 'key_pairs')
+ keypairs = db_utils.get_table(engine, 'key_pairs')
# Unique constraints are not listed in table.constraints for any db.
# So, simply add a duplicate keypair to check if unique constraint
# is applied to the key_pairs table or not.
@@ -1191,8 +1184,9 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertEqual(len(rows), 2)
def _pre_upgrade_174(self, engine):
- instance_types = get_table(engine, 'instance_types')
- instance_type_projects = get_table(engine, 'instance_type_projects')
+ instance_types = db_utils.get_table(engine, 'instance_types')
+ instance_type_projects = db_utils.get_table(engine,
+ 'instance_type_projects')
instance_type_data = [
dict(id=31, name='itp_name0', memory_mb=128, vcpus=1,
@@ -1211,7 +1205,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
instance_type_projects_data)
def _check_174(self, engine, data):
- it_projects = get_table(engine, 'instance_type_projects')
+ it_projects = db_utils.get_table(engine, 'instance_type_projects')
def get_(project_id, it_id, deleted):
deleted_value = 0 if not deleted else it_projects.c.id
@@ -1232,7 +1226,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
# migration 175, Modify volume_usage-cache, Drop column instance_id, add
# columns instance_uuid, project_id and user_id
def _pre_upgrade_175(self, engine):
- volume_usage_cache = get_table(engine, 'volume_usage_cache')
+ volume_usage_cache = db_utils.get_table(engine, 'volume_usage_cache')
fake_usage = {'volume_id': 'fake_volume_id',
'instance_id': 10,
'tot_last_refreshed': datetime.datetime.now(),
@@ -1248,7 +1242,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
volume_usage_cache.insert().execute(fake_usage)
def _check_175(self, engine, data):
- volume_usage_cache = get_table(engine, 'volume_usage_cache')
+ volume_usage_cache = db_utils.get_table(engine, 'volume_usage_cache')
# Get the record
rows = volume_usage_cache.select().execute().fetchall()
self.assertEqual(len(rows), 1)
@@ -1259,7 +1253,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertFalse('instance_id' in rows[0])
def _post_downgrade_175(self, engine):
- volume_usage_cache = get_table(engine, 'volume_usage_cache')
+ volume_usage_cache = db_utils.get_table(engine, 'volume_usage_cache')
# Get the record
rows = volume_usage_cache.select().execute().fetchall()
self.assertEqual(len(rows), 1)
@@ -1270,7 +1264,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertEqual(rows[0]['instance_id'], None)
def _check_176(self, engine, data):
- volume_usage_cache = get_table(engine, 'volume_usage_cache')
+ volume_usage_cache = db_utils.get_table(engine, 'volume_usage_cache')
# Get the record
rows = volume_usage_cache.select().execute().fetchall()
self.assertEqual(len(rows), 1)
@@ -1278,7 +1272,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertEqual(rows[0]['availability_zone'], None)
def _post_downgrade_176(self, engine):
- volume_usage_cache = get_table(engine, 'volume_usage_cache')
+ volume_usage_cache = db_utils.get_table(engine, 'volume_usage_cache')
# Get the record
rows = volume_usage_cache.select().execute().fetchall()
self.assertEqual(len(rows), 1)
@@ -1286,7 +1280,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertFalse('availability_zone' in rows[0])
def _pre_upgrade_177(self, engine):
- floating_ips = get_table(engine, 'floating_ips')
+ floating_ips = db_utils.get_table(engine, 'floating_ips')
data = [
{'address': '128.128.128.128', 'deleted': 0},
{'address': '128.128.128.128', 'deleted': 0},
@@ -1298,7 +1292,7 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
return data
def _check_177(self, engine, data):
- floating_ips = get_table(engine, 'floating_ips')
+ floating_ips = db_utils.get_table(engine, 'floating_ips')
def get_(address, deleted):
deleted_value = 0 if not deleted else floating_ips.c.id
@@ -1315,6 +1309,25 @@ class TestNovaMigrations(BaseMigrationTestCase, CommonTestsMixIn):
floating_ips.insert().execute,
dict(address='128.128.128.129', deleted=0))
+ # migration 179 - convert cells.deleted from boolean to int
+ def _pre_upgrade_179(self, engine):
+ cells_data = [
+ {'id': 4, 'deleted': True},
+ {'id': 5, 'deleted': False},
+ ]
+
+ cells = db_utils.get_table(engine, 'cells')
+ engine.execute(cells.insert(), cells_data)
+
+ return dict(cells=cells_data)
+
+ def _check_179(self, engine, data):
+ cells = db_utils.get_table(engine, 'cells')
+ cell = cells.select(cells.c.id == 4).execute().first()
+ self.assertEqual(4, cell.deleted)
+ cell = cells.select(cells.c.id == 5).execute().first()
+ self.assertEqual(0, cell.deleted)
+
class TestBaremetalMigrations(BaseMigrationTestCase, CommonTestsMixIn):
"""Test sqlalchemy-migrate migrations."""
@@ -1352,27 +1365,27 @@ class TestBaremetalMigrations(BaseMigrationTestCase, CommonTestsMixIn):
def _pre_upgrade_002(self, engine):
data = [{'id': 1, 'key': 'fake-key', 'image_path': '/dev/null',
'pxe_config_path': '/dev/null/', 'root_mb': 0, 'swap_mb': 0}]
- table = get_table(engine, 'bm_deployments')
+ table = db_utils.get_table(engine, 'bm_deployments')
engine.execute(table.insert(), data)
return data
def _check_002(self, engine, data):
self.assertRaises(sqlalchemy.exc.NoSuchTableError,
- get_table, engine, 'bm_deployments')
+ db_utils.get_table, engine, 'bm_deployments')
def _post_downgrade_004(self, engine):
- bm_nodes = get_table(engine, 'bm_nodes')
+ bm_nodes = db_utils.get_table(engine, 'bm_nodes')
self.assertNotIn(u'instance_name', [c.name for c in bm_nodes.columns])
def _check_005(self, engine, data):
- bm_nodes = get_table(engine, 'bm_nodes')
+ bm_nodes = db_utils.get_table(engine, 'bm_nodes')
columns = [c.name for c in bm_nodes.columns]
self.assertNotIn(u'prov_vlan_id', columns)
self.assertNotIn(u'registration_status', columns)
def _pre_upgrade_006(self, engine):
- nodes = get_table(engine, 'bm_nodes')
- ifs = get_table(engine, 'bm_interfaces')
+ nodes = db_utils.get_table(engine, 'bm_nodes')
+ ifs = db_utils.get_table(engine, 'bm_interfaces')
# node 1 has two diffrent addresses in bm_nodes and bm_interfaces
engine.execute(nodes.insert(),
[{'id': 1,
@@ -1391,7 +1404,7 @@ class TestBaremetalMigrations(BaseMigrationTestCase, CommonTestsMixIn):
'address': 'cc:cc:cc:cc:cc:cc'}])
def _check_006(self, engine, data):
- ifs = get_table(engine, 'bm_interfaces')
+ ifs = db_utils.get_table(engine, 'bm_interfaces')
rows = ifs.select().\
where(ifs.c.bm_node_id == 1).\
execute().\
@@ -1405,7 +1418,7 @@ class TestBaremetalMigrations(BaseMigrationTestCase, CommonTestsMixIn):
self.assertEqual(rows[0]['address'], 'cc:cc:cc:cc:cc:cc')
def _post_downgrade_006(self, engine):
- ifs = get_table(engine, 'bm_interfaces')
+ ifs = db_utils.get_table(engine, 'bm_interfaces')
rows = ifs.select().where(ifs.c.bm_node_id == 1).execute().fetchall()
self.assertEqual(len(rows), 1)
self.assertEqual(rows[0]['address'], 'bb:bb:bb:bb:bb:bb')
diff --git a/nova/tests/test_notifications.py b/nova/tests/test_notifications.py
index 68ef540b1..0d2108557 100644
--- a/nova/tests/test_notifications.py
+++ b/nova/tests/test_notifications.py
@@ -21,7 +21,7 @@ import copy
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import task_states
from nova.compute import vm_states
from nova import context
@@ -69,8 +69,8 @@ class NotificationsTestCase(test.TestCase):
self.instance = self._wrapped_create()
def _wrapped_create(self, params=None):
- instance_type = instance_types.get_instance_type_by_name('m1.tiny')
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ instance_type = flavors.get_instance_type_by_name('m1.tiny')
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
inst = {}
inst['image_ref'] = 1
inst['user_id'] = self.user_id
diff --git a/nova/tests/test_powervm.py b/nova/tests/test_powervm.py
index 73299f23a..8d22a296a 100644
--- a/nova/tests/test_powervm.py
+++ b/nova/tests/test_powervm.py
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2012 IBM Corp.
+# Copyright 2013 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@@ -19,12 +19,13 @@ Test suite for PowerVMDriver.
"""
import contextlib
+import paramiko
from nova import context
from nova import db
from nova import test
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova.network import model as network_model
@@ -47,6 +48,16 @@ def fake_lpar(instance_name):
uptime=939395, state='Running')
+def fake_ssh_connect(connection):
+ """Returns a new paramiko.SSHClient object."""
+ return paramiko.SSHClient()
+
+
+def raise_(ex):
+ """Raises the given Exception."""
+ raise ex
+
+
class FakePowerVMOperator(powervm_operator.PowerVMOperator):
def get_lpar(self, instance_name, resource_type='lpar'):
@@ -180,7 +191,7 @@ class PowerVMDriverTestCase(test.TestCase):
fake.stub_out_image_service(self.stubs)
ctxt = context.get_admin_context()
instance_type = db.instance_type_get(ctxt, 1)
- sys_meta = instance_types.save_instance_type_info({}, instance_type)
+ sys_meta = flavors.save_instance_type_info({}, instance_type)
return db.instance_create(ctxt,
{'user_id': 'fake',
'project_id': 'fake',
@@ -216,11 +227,6 @@ class PowerVMDriverTestCase(test.TestCase):
self.assertEqual(state, power_state.RUNNING)
def test_spawn_create_lpar_fail(self):
- # Verify on a failed spawn, we get the original exception raised.
- # helper function
- def raise_(ex):
- raise ex
-
self.flags(powervm_img_local_path='/images/')
self.stubs.Set(images, 'fetch', lambda *x, **y: None)
self.stubs.Set(
@@ -237,11 +243,6 @@ class PowerVMDriverTestCase(test.TestCase):
{'id': 'ANY_ID'}, [], 's3cr3t', fake_net_info)
def test_spawn_cleanup_on_fail(self):
- # Verify on a failed spawn, we get the original exception raised.
- # helper function
- def raise_(ex):
- raise ex
-
self.flags(powervm_img_local_path='/images/')
self.stubs.Set(images, 'fetch', lambda *x, **y: None)
self.stubs.Set(
@@ -617,3 +618,50 @@ class PowerVMDriverLparTestCase(test.TestCase):
self.mox.ReplayAll()
fake_op._operator.set_lpar_mac_base_value(inst_name, mac)
+
+
+class PowerVMDriverCommonTestCase(test.TestCase):
+ """Unit tests for the nova.virt.powervm.common module."""
+
+ def setUp(self):
+ super(PowerVMDriverCommonTestCase, self).setUp()
+ # our fake connection information never changes since we can't
+ # actually connect to anything for these tests
+ self.connection = common.Connection('fake_host', 'user', 'password')
+
+ def test_check_connection_ssh_is_none(self):
+ """
+ Passes a null ssh object to the check_connection method.
+ The method should create a new ssh connection using the
+ Connection object and return it.
+ """
+ self.stubs.Set(common, 'ssh_connect', fake_ssh_connect)
+ ssh = common.check_connection(None, self.connection)
+ self.assertIsNotNone(ssh)
+
+ def test_check_connection_transport_is_dead(self):
+ """
+ Passes an ssh object to the check_connection method which
+ does not have a transport set.
+ The method should create a new ssh connection using the
+ Connection object and return it.
+ """
+ self.stubs.Set(common, 'ssh_connect', fake_ssh_connect)
+ ssh1 = fake_ssh_connect(self.connection)
+ ssh2 = common.check_connection(ssh1, self.connection)
+ self.assertIsNotNone(ssh2)
+ self.assertNotEqual(ssh1, ssh2)
+
+ def test_check_connection_raise_ssh_exception(self):
+ """
+ Passes an ssh object to the check_connection method which
+ does not have a transport set.
+ The method should raise an SSHException.
+ """
+ self.stubs.Set(common, 'ssh_connect',
+ lambda *x, **y: raise_(paramiko.SSHException(
+ 'Error connecting to host.')))
+ ssh = fake_ssh_connect(self.connection)
+ self.assertRaises(paramiko.SSHException,
+ common.check_connection,
+ ssh, self.connection)
diff --git a/nova/tests/test_quota.py b/nova/tests/test_quota.py
index 1f422748b..b585aede5 100644
--- a/nova/tests/test_quota.py
+++ b/nova/tests/test_quota.py
@@ -21,7 +21,7 @@ import datetime
from oslo.config import cfg
from nova import compute
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import context
from nova import db
from nova.db.sqlalchemy import api as sqa_api
@@ -95,7 +95,7 @@ class QuotaIntegrationTestCase(test.TestCase):
for i in range(CONF.quota_instances):
instance = self._create_instance()
instance_uuids.append(instance['uuid'])
- inst_type = instance_types.get_instance_type_by_name('m1.small')
+ inst_type = flavors.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
self.assertRaises(exception.QuotaError, compute.API().create,
self.context,
@@ -108,7 +108,7 @@ class QuotaIntegrationTestCase(test.TestCase):
def test_too_many_cores(self):
instance = self._create_instance(cores=4)
- inst_type = instance_types.get_instance_type_by_name('m1.small')
+ inst_type = flavors.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
self.assertRaises(exception.QuotaError, compute.API().create,
self.context,
@@ -146,7 +146,7 @@ class QuotaIntegrationTestCase(test.TestCase):
metadata = {}
for i in range(CONF.quota_metadata_items + 1):
metadata['key%s' % i] = 'value%s' % i
- inst_type = instance_types.get_instance_type_by_name('m1.small')
+ inst_type = flavors.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
self.assertRaises(exception.QuotaError, compute.API().create,
self.context,
@@ -158,7 +158,7 @@ class QuotaIntegrationTestCase(test.TestCase):
def _create_with_injected_files(self, files):
api = compute.API()
- inst_type = instance_types.get_instance_type_by_name('m1.small')
+ inst_type = flavors.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
api.create(self.context, min_count=1, max_count=1,
instance_type=inst_type, image_href=image_uuid,
@@ -166,7 +166,7 @@ class QuotaIntegrationTestCase(test.TestCase):
def test_no_injected_files(self):
api = compute.API()
- inst_type = instance_types.get_instance_type_by_name('m1.small')
+ inst_type = flavors.get_instance_type_by_name('m1.small')
image_uuid = 'cedef40a-ed67-4d10-800e-17455edce175'
api.create(self.context,
instance_type=inst_type,
diff --git a/nova/tests/test_utils.py b/nova/tests/test_utils.py
index 6b7af48fc..39db03f3e 100644
--- a/nova/tests/test_utils.py
+++ b/nova/tests/test_utils.py
@@ -276,28 +276,6 @@ class GenericUtilsTestCase(test.TestCase):
hostname = "<}\x1fh\x10e\x08l\x02l\x05o\x12!{>"
self.assertEqual("hello", utils.sanitize_hostname(hostname))
- def test_bool_from_str(self):
- self.assertTrue(utils.bool_from_str('1'))
- self.assertTrue(utils.bool_from_str('2'))
- self.assertTrue(utils.bool_from_str('-1'))
- self.assertTrue(utils.bool_from_str('true'))
- self.assertTrue(utils.bool_from_str('True'))
- self.assertTrue(utils.bool_from_str('tRuE'))
- self.assertTrue(utils.bool_from_str('yes'))
- self.assertTrue(utils.bool_from_str('Yes'))
- self.assertTrue(utils.bool_from_str('YeS'))
- self.assertTrue(utils.bool_from_str('y'))
- self.assertTrue(utils.bool_from_str('Y'))
- self.assertFalse(utils.bool_from_str('False'))
- self.assertFalse(utils.bool_from_str('false'))
- self.assertFalse(utils.bool_from_str('no'))
- self.assertFalse(utils.bool_from_str('No'))
- self.assertFalse(utils.bool_from_str('n'))
- self.assertFalse(utils.bool_from_str('N'))
- self.assertFalse(utils.bool_from_str('0'))
- self.assertFalse(utils.bool_from_str(None))
- self.assertFalse(utils.bool_from_str('junk'))
-
def test_read_cached_file(self):
self.mox.StubOutWithMock(os.path, "getmtime")
os.path.getmtime(mox.IgnoreArg()).AndReturn(1)
diff --git a/nova/tests/test_virt_disk_vfs_localfs.py b/nova/tests/test_virt_disk_vfs_localfs.py
index 5bbac670e..b52817b18 100644
--- a/nova/tests/test_virt_disk_vfs_localfs.py
+++ b/nova/tests/test_virt_disk_vfs_localfs.py
@@ -14,13 +14,17 @@
# License for the specific language governing permissions and limitations
# under the License.
+from oslo.config import cfg
+
from nova import exception
+from nova.openstack.common import processutils
from nova import test
from nova.tests import utils as tests_utils
-from nova import utils
from nova.virt.disk.vfs import localfs as vfsimpl
+CONF = cfg.CONF
+
dirs = []
files = {}
commands = []
@@ -121,13 +125,13 @@ class VirtDiskVFSLocalFSTestPaths(test.TestCase):
def setUp(self):
super(VirtDiskVFSLocalFSTestPaths, self).setUp()
- real_execute = utils.execute
+ real_execute = processutils.execute
def nonroot_execute(*cmd_parts, **kwargs):
kwargs.pop('run_as_root', None)
return real_execute(*cmd_parts, **kwargs)
- self.stubs.Set(utils, 'execute', nonroot_execute)
+ self.stubs.Set(processutils, 'execute', nonroot_execute)
def test_check_safe_path(self):
if tests_utils.is_osx():
@@ -152,7 +156,7 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
global dirs, commands
dirs = []
commands = []
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -162,25 +166,30 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
self.assertEqual(dirs,
["/scratch/dir/some/dir", "/scratch/dir/other/dir"]),
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/dir'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('mkdir', '-p',
'/scratch/dir/some/dir'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/other/dir'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('mkdir', '-p',
'/scratch/dir/other/dir'),
- 'kwargs': {'run_as_root': True}}])
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}}])
def test_append_file(self):
global files, commands
files = {}
commands = []
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -190,20 +199,23 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
self.assertEquals(files["/scratch/dir/some/file"]["content"],
"Hello World Goodbye")
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('tee', '-a',
'/scratch/dir/some/file'),
'kwargs': {'process_input': ' Goodbye',
- 'run_as_root': True}}])
+ 'run_as_root': True,
+ 'root_helper': root_helper}}])
def test_replace_file(self):
global files, commands
files = {}
commands = []
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -213,36 +225,42 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
self.assertEquals(files["/scratch/dir/some/file"]["content"],
"Goodbye")
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('tee', '/scratch/dir/some/file'),
'kwargs': {'process_input': 'Goodbye',
- 'run_as_root': True}}])
+ 'run_as_root': True,
+ 'root_helper': root_helper}}])
def test_read_file(self):
global commands, files
files = {}
commands = []
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
self.assertEqual(vfs.read_file("/some/file"), "Hello World")
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('cat', '/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}}])
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}}])
def test_has_file(self):
global commands, files
files = {}
commands = []
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -251,31 +269,38 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
self.assertTrue(vfs.has_file("/some/file"))
self.assertFalse(vfs.has_file("/other/file"))
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('cat', '/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-e',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/other/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-e',
'/scratch/dir/other/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
])
def test_set_permissions(self):
global commands, files
commands = []
files = {}
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -284,24 +309,29 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
vfs.set_permissions("/some/file", 0777)
self.assertEquals(files["/scratch/dir/some/file"]["mode"], 0777)
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('cat', '/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('chmod', '777',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}}])
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}}])
def test_set_ownership(self):
global commands, files
commands = []
files = {}
- self.stubs.Set(utils, 'execute', fake_execute)
+ self.stubs.Set(processutils, 'execute', fake_execute)
vfs = vfsimpl.VFSLocalFS(imgfile="/dummy.qcow2", imgfmt="qcow2")
vfs.imgdir = "/scratch/dir"
@@ -322,27 +352,36 @@ class VirtDiskVFSLocalFSTest(test.TestCase):
self.assertEquals(files["/scratch/dir/some/file"]["uid"], 110)
self.assertEquals(files["/scratch/dir/some/file"]["gid"], 600)
+ root_helper = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
self.assertEqual(commands,
[{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('cat', '/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('chown', 'fred',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('chgrp', 'users',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('readlink', '-nm',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}},
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}},
{'args': ('chown', 'joe:admins',
'/scratch/dir/some/file'),
- 'kwargs': {'run_as_root': True}}])
+ 'kwargs': {'run_as_root': True,
+ 'root_helper': root_helper}}])
diff --git a/nova/tests/test_vmwareapi_vif.py b/nova/tests/test_vmwareapi_vif.py
new file mode 100644
index 000000000..043885543
--- /dev/null
+++ b/nova/tests/test_vmwareapi_vif.py
@@ -0,0 +1,87 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+#
+# Copyright 2013 Canonical Corp.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from nova.network import model as network_model
+from nova import test
+from nova.virt.vmwareapi import network_util
+from nova.virt.vmwareapi import vif
+
+
+class VMwareVifTestCase(test.TestCase):
+ def setUp(self):
+ super(VMwareVifTestCase, self).setUp()
+ self.flags(vmwareapi_vlan_interface='vmnet0')
+ network = network_model.Network(id=0,
+ bridge='fa0',
+ label='fake',
+ vlan=3,
+ bridge_interface='eth0',
+ injected=True)
+
+ self.vif = network_model.NetworkInfo([
+ network_model.VIF(id=None,
+ address='DE:AD:BE:EF:00:00',
+ network=network,
+ type=None,
+ devname=None,
+ ovs_interfaceid=None,
+ rxtx_cap=3)
+ ])[0]
+ self.session = "fake"
+ self.cluster = None
+
+ def tearDown(self):
+ super(VMwareVifTestCase, self).tearDown()
+
+ def test_ensure_vlan_bridge(self):
+ self.mox.StubOutWithMock(network_util, 'get_network_with_the_name')
+ self.mox.StubOutWithMock(network_util,
+ 'get_vswitch_for_vlan_interface')
+ self.mox.StubOutWithMock(network_util,
+ 'check_if_vlan_interface_exists')
+ self.mox.StubOutWithMock(network_util, 'create_port_group')
+ network_util.get_network_with_the_name(self.session, 'fa0',
+ self.cluster).AndReturn(None)
+ network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0',
+ self.cluster).AndReturn('vmnet0')
+ network_util.check_if_vlan_interface_exists(self.session, 'vmnet0',
+ self.cluster).AndReturn(True)
+ network_util.create_port_group(self.session, 'fa0', 'vmnet0', 3,
+ self.cluster)
+
+ self.mox.ReplayAll()
+ vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=True)
+
+ # FlatDHCP network mode without vlan
+ def test_ensure_vlan_bridge_without_vlan(self):
+ self.mox.StubOutWithMock(network_util, 'get_network_with_the_name')
+ self.mox.StubOutWithMock(network_util,
+ 'get_vswitch_for_vlan_interface')
+ self.mox.StubOutWithMock(network_util,
+ 'check_if_vlan_interface_exists')
+ self.mox.StubOutWithMock(network_util, 'create_port_group')
+
+ network_util.get_network_with_the_name(self.session, 'fa0',
+ self.cluster).AndReturn(None)
+ network_util.get_vswitch_for_vlan_interface(self.session, 'vmnet0',
+ self.cluster).AndReturn('vmnet0')
+ network_util.check_if_vlan_interface_exists(self.session, 'vmnet0',
+ self.cluster).AndReturn(True)
+ network_util.create_port_group(self.session, 'fa0', 'vmnet0', 0,
+ self.cluster)
+ self.mox.ReplayAll()
+ vif.ensure_vlan_bridge(self.session, self.vif, create_vlan=False)
diff --git a/nova/tests/test_vmwareapi_vm_util.py b/nova/tests/test_vmwareapi_vm_util.py
new file mode 100644
index 000000000..eda2c25f9
--- /dev/null
+++ b/nova/tests/test_vmwareapi_vm_util.py
@@ -0,0 +1,55 @@
+# vim: tabstop=4 shiftwidth=4 softtabstop=4
+#
+# Copyright 2013 Canonical Corp.
+# All Rights Reserved.
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+from nova import exception
+from nova import test
+from nova.virt.vmwareapi import fake
+from nova.virt.vmwareapi import vm_util
+
+
+class fake_session(object):
+ def __init__(self, ret=None):
+ self.ret = ret
+
+ def _call_method(self, *args):
+ return self.ret
+
+
+class VMwareVMUtilTestCase(test.TestCase):
+ def setUp(self):
+ super(VMwareVMUtilTestCase, self).setUp()
+
+ def tearDown(self):
+ super(VMwareVMUtilTestCase, self).tearDown()
+
+ def test_get_datastore_ref_and_name(self):
+ result = vm_util.get_datastore_ref_and_name(
+ fake_session([fake.Datastore()]))
+
+ self.assertEquals(result[1], "fake-ds")
+ self.assertEquals(result[2], 1024 * 1024 * 1024)
+ self.assertEquals(result[3], 1024 * 1024 * 500)
+
+ def test_get_datastore_ref_and_name_without_datastore(self):
+
+ self.assertRaises(exception.DatastoreNotFound,
+ vm_util.get_datastore_ref_and_name,
+ fake_session(), host="fake-host")
+
+ self.assertRaises(exception.DatastoreNotFound,
+ vm_util.get_datastore_ref_and_name,
+ fake_session(), cluster="fake-cluster")
diff --git a/nova/tests/test_xenapi.py b/nova/tests/test_xenapi.py
index 3490a5dbf..45ebfaab3 100644
--- a/nova/tests/test_xenapi.py
+++ b/nova/tests/test_xenapi.py
@@ -26,7 +26,7 @@ import re
from oslo.config import cfg
from nova.compute import api as compute_api
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova.compute import vm_states
@@ -39,7 +39,7 @@ from nova.openstack.common import log as logging
from nova import test
from nova.tests.db import fakes as db_fakes
from nova.tests import fake_network
-from nova.tests import fake_utils
+from nova.tests import fake_processutils
import nova.tests.image.fake as fake_image
from nova.tests import matchers
from nova.tests.xenapi import stubs
@@ -179,7 +179,7 @@ def stub_vm_utils_with_vdi_attached_here(function, should_return=True):
def create_instance_with_system_metadata(context, instance_values):
instance_type = db.instance_type_get(context,
instance_values['instance_type_id'])
- sys_meta = instance_types.save_instance_type_info({},
+ sys_meta = flavors.save_instance_type_info({},
instance_type)
instance_values['system_metadata'] = sys_meta
return db.instance_create(context, instance_values)
@@ -323,7 +323,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
stubs.stubout_get_this_vm_uuid(self.stubs)
stubs.stubout_is_vdi_pv(self.stubs)
stubs.stub_out_vm_methods(self.stubs)
- fake_utils.stub_out_utils_execute(self.stubs)
+ fake_processutils.stub_out_processutils_execute(self.stubs)
self.user_id = 'fake'
self.project_id = 'fake'
self.context = context.RequestContext(self.user_id, self.project_id)
@@ -872,7 +872,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
def _readlink_handler(cmd_parts, **kwargs):
return os.path.realpath(cmd_parts[2]), ''
- fake_utils.fake_execute_set_repliers([
+ fake_processutils.fake_execute_set_repliers([
# Capture the tee .../etc/network/interfaces command
(r'tee.*interfaces', _tee_handler),
(r'readlink -nm.*', _readlink_handler),
@@ -917,7 +917,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
self._tee_executed = True
return '', ''
- fake_utils.fake_execute_set_repliers([
+ fake_processutils.fake_execute_set_repliers([
(r'mount', _mount_handler),
(r'umount', _umount_handler),
(r'tee.*interfaces', _tee_handler)])
@@ -1188,7 +1188,7 @@ class XenAPIVMTestCase(stubs.XenAPITestBase):
def test_per_instance_usage_running(self):
instance = self._create_instance(spawn=True)
- instance_type = instance_types.get_instance_type(3)
+ instance_type = flavors.get_instance_type(3)
expected = {instance['uuid']: {'memory_mb': instance_type['memory_mb'],
'uuid': instance['uuid']}}
@@ -1319,7 +1319,7 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase):
self.migration = db.migration_create(
context.get_admin_context(), migration_values)
- fake_utils.stub_out_utils_execute(self.stubs)
+ fake_processutils.stub_out_processutils_execute(self.stubs)
stubs.stub_out_migration_methods(self.stubs)
stubs.stubout_get_this_vm_uuid(self.stubs)
@@ -1461,7 +1461,7 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase):
self.assertEqual(self.fake_vm_start_called, True)
def test_finish_migrate_no_local_storage(self):
- tiny_type = instance_types.get_instance_type_by_name('m1.tiny')
+ tiny_type = flavors.get_instance_type_by_name('m1.tiny')
tiny_type_id = tiny_type['id']
self.instance_values.update({'instance_type_id': tiny_type_id,
'root_gb': 0})
@@ -1513,6 +1513,122 @@ class XenAPIMigrateInstance(stubs.XenAPITestBase):
self.context, instance,
'127.0.0.1', instance_type, None)
+ def test_migrate_rollback_when_resize_down_fs_fails(self):
+ conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+ vmops = conn._vmops
+ virtapi = vmops._virtapi
+
+ self.mox.StubOutWithMock(vmops, '_resize_ensure_vm_is_shutdown')
+ self.mox.StubOutWithMock(vmops, '_apply_orig_vm_name_label')
+ self.mox.StubOutWithMock(vm_utils, 'resize_disk')
+ self.mox.StubOutWithMock(vmops, '_migrate_vhd')
+ self.mox.StubOutWithMock(vm_utils, 'destroy_vdi')
+ self.mox.StubOutWithMock(vm_utils, 'get_vdi_for_vm_safely')
+ self.mox.StubOutWithMock(vmops, '_restore_orig_vm_and_cleanup_orphan')
+ self.mox.StubOutWithMock(virtapi, 'instance_update')
+
+ instance = {'auto_disk_config': True, 'uuid': 'uuid'}
+ vm_ref = "vm_ref"
+ dest = "dest"
+ instance_type = "type"
+ sr_path = "sr_path"
+
+ virtapi.instance_update(self.context, 'uuid', {'progress': 20.0})
+ vmops._resize_ensure_vm_is_shutdown(instance, vm_ref)
+ vmops._apply_orig_vm_name_label(instance, vm_ref)
+ old_vdi_ref = "old_ref"
+ vm_utils.get_vdi_for_vm_safely(vmops._session, vm_ref).AndReturn(
+ (old_vdi_ref, None))
+ virtapi.instance_update(self.context, 'uuid', {'progress': 40.0})
+ new_vdi_ref = "new_ref"
+ new_vdi_uuid = "new_uuid"
+ vm_utils.resize_disk(vmops._session, instance, old_vdi_ref,
+ instance_type).AndReturn((new_vdi_ref, new_vdi_uuid))
+ virtapi.instance_update(self.context, 'uuid', {'progress': 60.0})
+ vmops._migrate_vhd(instance, new_vdi_uuid, dest,
+ sr_path, 0).AndRaise(
+ exception.ResizeError(reason="asdf"))
+
+ vm_utils.destroy_vdi(vmops._session, new_vdi_ref)
+ vmops._restore_orig_vm_and_cleanup_orphan(instance, None)
+
+ self.mox.ReplayAll()
+
+ self.assertRaises(exception.InstanceFaultRollback,
+ vmops._migrate_disk_resizing_down, self.context,
+ instance, dest, instance_type, vm_ref, sr_path)
+
+ def test_resize_ensure_vm_is_shutdown_cleanly(self):
+ conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+ vmops = conn._vmops
+ fake_instance = {'uuid': 'uuid'}
+
+ self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown')
+ self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm')
+ self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm')
+
+ vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False)
+ vm_utils.clean_shutdown_vm(vmops._session, fake_instance,
+ "ref").AndReturn(True)
+
+ self.mox.ReplayAll()
+
+ vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref")
+
+ def test_resize_ensure_vm_is_shutdown_forced(self):
+ conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+ vmops = conn._vmops
+ fake_instance = {'uuid': 'uuid'}
+
+ self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown')
+ self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm')
+ self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm')
+
+ vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False)
+ vm_utils.clean_shutdown_vm(vmops._session, fake_instance,
+ "ref").AndReturn(False)
+ vm_utils.hard_shutdown_vm(vmops._session, fake_instance,
+ "ref").AndReturn(True)
+
+ self.mox.ReplayAll()
+
+ vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref")
+
+ def test_resize_ensure_vm_is_shutdown_fails(self):
+ conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+ vmops = conn._vmops
+ fake_instance = {'uuid': 'uuid'}
+
+ self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown')
+ self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm')
+ self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm')
+
+ vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(False)
+ vm_utils.clean_shutdown_vm(vmops._session, fake_instance,
+ "ref").AndReturn(False)
+ vm_utils.hard_shutdown_vm(vmops._session, fake_instance,
+ "ref").AndReturn(False)
+
+ self.mox.ReplayAll()
+
+ self.assertRaises(exception.ResizeError,
+ vmops._resize_ensure_vm_is_shutdown, fake_instance, "ref")
+
+ def test_resize_ensure_vm_is_shutdown_already_shutdown(self):
+ conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+ vmops = conn._vmops
+ fake_instance = {'uuid': 'uuid'}
+
+ self.mox.StubOutWithMock(vm_utils, 'is_vm_shutdown')
+ self.mox.StubOutWithMock(vm_utils, 'clean_shutdown_vm')
+ self.mox.StubOutWithMock(vm_utils, 'hard_shutdown_vm')
+
+ vm_utils.is_vm_shutdown(vmops._session, "ref").AndReturn(True)
+
+ self.mox.ReplayAll()
+
+ vmops._resize_ensure_vm_is_shutdown(fake_instance, "ref")
+
class XenAPIImageTypeTestCase(test.TestCase):
"""Test ImageType class."""
@@ -2825,21 +2941,29 @@ class XenAPILiveMigrateTestCase(stubs.XenAPITestBase):
{}, {},
True, False)
- def test_check_can_live_migrate_source_with_block_migrate(self):
- stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
- self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
-
+ def _add_default_live_migrate_stubs(self, conn):
def fake_generate_vdi_map(destination_sr_ref, _vm_ref):
pass
- self.stubs.Set(self.conn._vmops, "_generate_vdi_map",
- fake_generate_vdi_map)
+ def fake_get_iscsi_srs(destination_sr_ref, _vm_ref):
+ return []
def fake_get_vm_opaque_ref(instance):
return "fake_vm"
- self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref",
+ self.stubs.Set(conn._vmops, "_generate_vdi_map",
+ fake_generate_vdi_map)
+ self.stubs.Set(conn._vmops, "_get_iscsi_srs",
+ fake_get_iscsi_srs)
+ self.stubs.Set(conn._vmops, "_get_vm_opaque_ref",
fake_get_vm_opaque_ref)
+
+ def test_check_can_live_migrate_source_with_block_migrate(self):
+ stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
+ self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+
+ self._add_default_live_migrate_stubs(self.conn)
+
dest_check_data = {'block_migration': True,
'migrate_data': {
'destination_sr_ref': None,
@@ -2850,22 +2974,65 @@ class XenAPILiveMigrateTestCase(stubs.XenAPITestBase):
dest_check_data)
self.assertEqual(dest_check_data, result)
- def test_check_can_live_migrate_source_with_block_migrate_fails(self):
- stubs.stubout_session(self.stubs,
- stubs.FakeSessionForFailedMigrateTests)
+ def test_check_can_live_migrate_source_with_block_migrate_iscsi(self):
+ stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
- def fake_generate_vdi_map(destination_sr_ref, _vm_ref):
- pass
+ self._add_default_live_migrate_stubs(self.conn)
- self.stubs.Set(self.conn._vmops, "_generate_vdi_map",
- fake_generate_vdi_map)
+ def fake_get_iscsi_srs(destination_sr_ref, _vm_ref):
+ return ['sr_ref']
+ self.stubs.Set(self.conn._vmops, "_get_iscsi_srs",
+ fake_get_iscsi_srs)
- def fake_get_vm_opaque_ref(instance):
- return "fake_vm"
+ def fake_make_plugin_call(plugin, method, **args):
+ return "true"
+ self.stubs.Set(self.conn._vmops, "_make_plugin_call",
+ fake_make_plugin_call)
- self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref",
- fake_get_vm_opaque_ref)
+ dest_check_data = {'block_migration': True,
+ 'migrate_data': {
+ 'destination_sr_ref': None,
+ 'migrate_send_data': None
+ }}
+ result = self.conn.check_can_live_migrate_source(self.context,
+ {'host': 'host'},
+ dest_check_data)
+ self.assertEqual(dest_check_data, result)
+
+ def test_check_can_live_migrate_source_with_block_iscsi_fails(self):
+ stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
+ self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+
+ self._add_default_live_migrate_stubs(self.conn)
+
+ def fake_get_iscsi_srs(destination_sr_ref, _vm_ref):
+ return ['sr_ref']
+ self.stubs.Set(self.conn._vmops, "_get_iscsi_srs",
+ fake_get_iscsi_srs)
+
+ def fake_make_plugin_call(plugin, method, **args):
+ return {'returncode': 'error', 'message': 'Plugin not found'}
+ self.stubs.Set(self.conn._vmops, "_make_plugin_call",
+ fake_make_plugin_call)
+
+ dest_check_data = {'block_migration': True,
+ 'migrate_data': {
+ 'destination_sr_ref': None,
+ 'migrate_send_data': None
+ }}
+
+ self.assertRaises(exception.MigrationError,
+ self.conn.check_can_live_migrate_source,
+ self.context, {'host': 'host'},
+ {})
+
+ def test_check_can_live_migrate_source_with_block_migrate_fails(self):
+ stubs.stubout_session(self.stubs,
+ stubs.FakeSessionForFailedMigrateTests)
+ self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+
+ self._add_default_live_migrate_stubs(self.conn)
dest_check_data = {'block_migration': True,
'migrate_data': {
@@ -2966,28 +3133,46 @@ class XenAPILiveMigrateTestCase(stubs.XenAPITestBase):
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
- def fake_generate_vdi_map(destination_sr_ref, _vm_ref):
- pass
+ self._add_default_live_migrate_stubs(self.conn)
- self.stubs.Set(self.conn._vmops, "_generate_vdi_map",
- fake_generate_vdi_map)
+ def post_method(context, instance, destination_hostname,
+ block_migration):
+ post_method.called = True
- def fake_get_vm_opaque_ref(instance):
- return "fake_vm"
+ # pass block_migration = True and migrate data
+ migrate_data = {"destination_sr_ref": "foo",
+ "migrate_send_data": "bar"}
+ self.conn.live_migration(self.conn, None, None, post_method, None,
+ True, migrate_data)
+ self.assertTrue(post_method.called, "post_method.called")
- self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref",
- fake_get_vm_opaque_ref)
+ def test_live_migration_block_cleans_srs(self):
+ stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
+ self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
+
+ self._add_default_live_migrate_stubs(self.conn)
+
+ def fake_get_iscsi_srs(context, instance):
+ return ['sr_ref']
+ self.stubs.Set(self.conn._vmops, "_get_iscsi_srs",
+ fake_get_iscsi_srs)
+
+ def fake_forget_sr(context, instance):
+ fake_forget_sr.called = True
+ self.stubs.Set(volume_utils, "forget_sr",
+ fake_forget_sr)
def post_method(context, instance, destination_hostname,
block_migration):
post_method.called = True
- # pass block_migration = True and migrate data
migrate_data = {"destination_sr_ref": "foo",
"migrate_send_data": "bar"}
self.conn.live_migration(self.conn, None, None, post_method, None,
True, migrate_data)
+
self.assertTrue(post_method.called, "post_method.called")
+ self.assertTrue(fake_forget_sr.called, "forget_sr.called")
def test_live_migration_with_block_migration_raises_invalid_param(self):
stubs.stubout_session(self.stubs, stubs.FakeSessionForVMTests)
@@ -3012,15 +3197,7 @@ class XenAPILiveMigrateTestCase(stubs.XenAPITestBase):
stubs.FakeSessionForFailedMigrateTests)
self.conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
- def fake_get_vm_opaque_ref(instance):
- return "fake_vm"
- self.stubs.Set(self.conn._vmops, "_get_vm_opaque_ref",
- fake_get_vm_opaque_ref)
-
- def fake_generate_vdi_map(destination_sr_ref, _vm_ref):
- pass
- self.stubs.Set(self.conn._vmops, "_generate_vdi_map",
- fake_generate_vdi_map)
+ self._add_default_live_migrate_stubs(self.conn)
def recover_method(context, instance, destination_hostname,
block_migration):
@@ -3046,11 +3223,7 @@ class XenAPILiveMigrateTestCase(stubs.XenAPITestBase):
conn = xenapi_conn.XenAPIDriver(fake.FakeVirtAPI(), False)
- def fake_get_vm_opaque_ref(instance):
- return "fake_vm"
-
- self.stubs.Set(conn._vmops, "_get_vm_opaque_ref",
- fake_get_vm_opaque_ref)
+ self._add_default_live_migrate_stubs(conn)
def fake_generate_vdi_map(destination_sr_ref, _vm_ref):
return fake_vdi_map
diff --git a/nova/tests/utils.py b/nova/tests/utils.py
index e9248c7b7..3d429aada 100644
--- a/nova/tests/utils.py
+++ b/nova/tests/utils.py
@@ -18,7 +18,7 @@ import platform
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
import nova.context
import nova.db
from nova import exception
@@ -72,7 +72,7 @@ def get_test_instance(context=None, instance_type=None):
instance_type = get_test_instance_type(context)
metadata = {}
- instance_types.save_instance_type_info(metadata, instance_type, '')
+ flavors.save_instance_type_info(metadata, instance_type, '')
test_instance = {'memory_kb': '2048000',
'basepath': '/some/path',
diff --git a/nova/tests/virt/xenapi/test_vm_utils.py b/nova/tests/virt/xenapi/test_vm_utils.py
index bba704ed9..2180f75f9 100644
--- a/nova/tests/virt/xenapi/test_vm_utils.py
+++ b/nova/tests/virt/xenapi/test_vm_utils.py
@@ -172,3 +172,195 @@ class XenAPIGetUUID(test.TestCase):
self.assertEquals('2f46f0f5-f14c-ef1b-1fac-9eeca0888a3f',
vm_utils.get_this_vm_uuid())
self.mox.VerifyAll()
+
+
+class FakeSession():
+ def call_xenapi(self, *args):
+ pass
+
+
+class FetchVhdImageTestCase(test.TestCase):
+ def _apply_stubouts(self):
+ self.mox.StubOutWithMock(vm_utils, '_make_uuid_stack')
+ self.mox.StubOutWithMock(vm_utils, 'get_sr_path')
+ self.mox.StubOutWithMock(vm_utils, '_image_uses_bittorrent')
+ self.mox.StubOutWithMock(vm_utils, '_add_bittorrent_params')
+ self.mox.StubOutWithMock(vm_utils, '_generate_glance_callback')
+ self.mox.StubOutWithMock(vm_utils,
+ '_fetch_using_dom0_plugin_with_retry')
+ self.mox.StubOutWithMock(vm_utils, 'safe_find_sr')
+ self.mox.StubOutWithMock(vm_utils, '_scan_sr')
+ self.mox.StubOutWithMock(vm_utils, '_check_vdi_size')
+ self.mox.StubOutWithMock(vm_utils, 'destroy_vdi')
+
+ def _common_params_setup(self, uses_bittorrent):
+ self.context = "context"
+ self.session = FakeSession()
+ self.instance = {"uuid": "uuid"}
+ self.image_id = "image_id"
+ self.uuid_stack = ["uuid_stack"]
+ self.sr_path = "sr_path"
+ self.params = {'image_id': self.image_id,
+ 'uuid_stack': self.uuid_stack, 'sr_path': self.sr_path}
+ self.vdis = {'root': {'uuid': 'vdi'}}
+
+ vm_utils._make_uuid_stack().AndReturn(self.uuid_stack)
+ vm_utils.get_sr_path(self.session).AndReturn(self.sr_path)
+ vm_utils._image_uses_bittorrent(self.context,
+ self.instance).AndReturn(uses_bittorrent)
+
+ def test_fetch_vhd_image_works_with_glance(self):
+ self._apply_stubouts()
+ self._common_params_setup(False)
+
+ vm_utils._generate_glance_callback(self.context).AndReturn("dummy")
+
+ vm_utils._fetch_using_dom0_plugin_with_retry(self.context,
+ self.session, self.image_id, "glance", self.params,
+ callback="dummy").AndReturn(self.vdis)
+
+ vm_utils.safe_find_sr(self.session).AndReturn("sr")
+ vm_utils._scan_sr(self.session, "sr")
+ vm_utils._check_vdi_size(self.context, self.session, self.instance,
+ "vdi")
+
+ self.mox.ReplayAll()
+
+ self.assertEqual("vdi", vm_utils._fetch_vhd_image(self.context,
+ self.session, self.instance, self.image_id)['root']['uuid'])
+
+ self.mox.VerifyAll()
+
+ def test_fetch_vhd_image_works_with_bittorrent(self):
+ self._apply_stubouts()
+ self._common_params_setup(True)
+
+ vm_utils._add_bittorrent_params(self.params)
+
+ vm_utils._fetch_using_dom0_plugin_with_retry(self.context,
+ self.session, self.image_id, "bittorrent", self.params,
+ callback=None).AndReturn(self.vdis)
+
+ vm_utils.safe_find_sr(self.session).AndReturn("sr")
+ vm_utils._scan_sr(self.session, "sr")
+ vm_utils._check_vdi_size(self.context, self.session, self.instance,
+ "vdi")
+
+ self.mox.ReplayAll()
+
+ self.assertEqual("vdi", vm_utils._fetch_vhd_image(self.context,
+ self.session, self.instance, self.image_id)['root']['uuid'])
+
+ self.mox.VerifyAll()
+
+ def test_fetch_vhd_image_cleans_up_vid_on_fail(self):
+ self._apply_stubouts()
+ self._common_params_setup(True)
+ self.mox.StubOutWithMock(self.session, 'call_xenapi')
+
+ vm_utils._add_bittorrent_params(self.params)
+
+ vm_utils._fetch_using_dom0_plugin_with_retry(self.context,
+ self.session, self.image_id, "bittorrent", self.params,
+ callback=None).AndReturn(self.vdis)
+
+ vm_utils.safe_find_sr(self.session).AndReturn("sr")
+ vm_utils._scan_sr(self.session, "sr")
+ vm_utils._check_vdi_size(self.context, self.session, self.instance,
+ "vdi").AndRaise(exception.ImageTooLarge)
+
+ self.session.call_xenapi("VDI.get_by_uuid", "vdi").AndReturn("ref")
+ vm_utils.destroy_vdi(self.session, "ref")
+
+ self.mox.ReplayAll()
+
+ self.assertRaises(exception.ImageTooLarge, vm_utils._fetch_vhd_image,
+ self.context, self.session, self.instance, self.image_id)
+
+ self.mox.VerifyAll()
+
+
+class ResizeHelpersTestCase(test.TestCase):
+ def test_get_min_sectors(self):
+ self.mox.StubOutWithMock(utils, 'execute')
+
+ utils.execute('resize2fs', '-P', "fakepath",
+ run_as_root=True).AndReturn(("size is: 42", ""))
+
+ self.mox.ReplayAll()
+
+ result = vm_utils._get_min_sectors("fakepath")
+ self.assertEquals(42 * 4096 / 512, result)
+
+ def test_repair_filesystem(self):
+ self.mox.StubOutWithMock(utils, 'execute')
+
+ utils.execute('e2fsck', '-f', "-y", "fakepath",
+ run_as_root=True, check_exit_code=[0, 1, 2]).AndReturn(
+ ("size is: 42", ""))
+
+ self.mox.ReplayAll()
+
+ vm_utils._repair_filesystem("fakepath")
+
+ def _call_tune2fs_remove_journal(self, path):
+ utils.execute("tune2fs", "-O ^has_journal", path, run_as_root=True)
+
+ def _call_tune2fs_add_journal(self, path):
+ utils.execute("tune2fs", "-j", path, run_as_root=True)
+
+ def _call_parted(self, path, start, end):
+ utils.execute('parted', '--script', path, 'rm', '1',
+ run_as_root=True)
+ utils.execute('parted', '--script', path, 'mkpart',
+ 'primary', '%ds' % start, '%ds' % end, run_as_root=True)
+
+ def test_resize_part_and_fs_down_succeeds(self):
+ self.mox.StubOutWithMock(vm_utils, "_repair_filesystem")
+ self.mox.StubOutWithMock(utils, 'execute')
+ self.mox.StubOutWithMock(vm_utils, "_get_min_sectors")
+
+ dev_path = "/dev/fake"
+ partition_path = "%s1" % dev_path
+ vm_utils._repair_filesystem(partition_path)
+ self._call_tune2fs_remove_journal(partition_path)
+ vm_utils._get_min_sectors(partition_path).AndReturn(9)
+ utils.execute("resize2fs", partition_path, "10s", run_as_root=True)
+ self._call_parted(dev_path, 0, 9)
+ self._call_tune2fs_add_journal(partition_path)
+
+ self.mox.ReplayAll()
+
+ vm_utils._resize_part_and_fs("fake", 0, 20, 10)
+
+ def test_resize_part_and_fs_down_fails_disk_too_big(self):
+ self.mox.StubOutWithMock(vm_utils, "_repair_filesystem")
+ self.mox.StubOutWithMock(utils, 'execute')
+ self.mox.StubOutWithMock(vm_utils, "_get_min_sectors")
+
+ dev_path = "/dev/fake"
+ partition_path = "%s1" % dev_path
+ vm_utils._repair_filesystem(partition_path)
+ self._call_tune2fs_remove_journal(partition_path)
+ vm_utils._get_min_sectors(partition_path).AndReturn(10)
+
+ self.mox.ReplayAll()
+
+ self.assertRaises(exception.ResizeError,
+ vm_utils._resize_part_and_fs, "fake", 0, 20, 10)
+
+ def test_resize_part_and_fs_up_succeeds(self):
+ self.mox.StubOutWithMock(vm_utils, "_repair_filesystem")
+ self.mox.StubOutWithMock(utils, 'execute')
+
+ dev_path = "/dev/fake"
+ partition_path = "%s1" % dev_path
+ vm_utils._repair_filesystem(partition_path)
+ self._call_tune2fs_remove_journal(partition_path)
+ self._call_parted(dev_path, 0, 29)
+ utils.execute("resize2fs", partition_path, run_as_root=True)
+ self._call_tune2fs_add_journal(partition_path)
+
+ self.mox.ReplayAll()
+
+ vm_utils._resize_part_and_fs("fake", 0, 20, 30)
diff --git a/nova/tests/virt/xenapi/test_vmops.py b/nova/tests/virt/xenapi/test_vmops.py
index 1acc4d515..18a444f41 100644
--- a/nova/tests/virt/xenapi/test_vmops.py
+++ b/nova/tests/virt/xenapi/test_vmops.py
@@ -151,3 +151,18 @@ class VMOpsTestCase(test.TestCase):
self._vmops._determine_vm_mode(fake_instance, fake_vdis,
fake_disk_type))
self.mox.VerifyAll()
+
+ def test_xsm_sr_check_relaxed_cached(self):
+ self.make_plugin_call_count = 0
+
+ def fake_make_plugin_call(plugin, method, **args):
+ self.make_plugin_call_count = self.make_plugin_call_count + 1
+ return "true"
+
+ self.stubs.Set(self._vmops, "_make_plugin_call",
+ fake_make_plugin_call)
+
+ self.assertTrue(self._vmops._is_xsm_sr_check_relaxed())
+ self.assertTrue(self._vmops._is_xsm_sr_check_relaxed())
+
+ self.assertEqual(self.make_plugin_call_count, 1)
diff --git a/nova/tests/virt/xenapi/test_volumeops.py b/nova/tests/virt/xenapi/test_volumeops.py
index 3497babf2..5d4344bb0 100644
--- a/nova/tests/virt/xenapi/test_volumeops.py
+++ b/nova/tests/virt/xenapi/test_volumeops.py
@@ -31,16 +31,16 @@ class VolumeAttachTestCase(test.TestCase):
return side_effect
ops = volumeops.VolumeOps('session')
- self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise')
+ self.mox.StubOutWithMock(volumeops.vm_utils, 'lookup')
self.mox.StubOutWithMock(volumeops.vm_utils, 'find_vbd_by_number')
- self.mox.StubOutWithMock(volumeops.vm_utils, '_is_vm_shutdown')
+ self.mox.StubOutWithMock(volumeops.vm_utils, 'is_vm_shutdown')
self.mox.StubOutWithMock(volumeops.vm_utils, 'unplug_vbd')
self.mox.StubOutWithMock(volumeops.vm_utils, 'destroy_vbd')
self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number')
self.mox.StubOutWithMock(volumeops.volume_utils, 'find_sr_from_vbd')
self.mox.StubOutWithMock(volumeops.volume_utils, 'purge_sr')
- volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn(
+ volumeops.vm_utils.lookup('session', 'instance_1').AndReturn(
'vmref')
volumeops.volume_utils.get_device_number('mountpoint').AndReturn(
@@ -49,7 +49,7 @@ class VolumeAttachTestCase(test.TestCase):
volumeops.vm_utils.find_vbd_by_number(
'session', 'vmref', 'devnumber').AndReturn('vbdref')
- volumeops.vm_utils._is_vm_shutdown('session', 'vmref').AndReturn(
+ volumeops.vm_utils.is_vm_shutdown('session', 'vmref').AndReturn(
False)
volumeops.vm_utils.unplug_vbd('session', 'vbdref')
@@ -78,6 +78,8 @@ class VolumeAttachTestCase(test.TestCase):
self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise')
self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number')
+ connection_info = dict(driver_volume_type='iscsi', data='conn_data')
+
volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn(
'vmref')
@@ -85,11 +87,12 @@ class VolumeAttachTestCase(test.TestCase):
'devnumber')
ops._connect_volume(
- 'conn_data', 'devnumber', 'instance_1', 'vmref', hotplug=True)
+ connection_info, 'devnumber', 'instance_1', 'vmref',
+ hotplug=True).AndReturn(('sruuid', 'vdiuuid'))
self.mox.ReplayAll()
ops.attach_volume(
- dict(driver_volume_type='iscsi', data='conn_data'),
+ connection_info,
'instance_1', 'mountpoint')
def test_attach_volume_no_hotplug(self):
@@ -98,6 +101,8 @@ class VolumeAttachTestCase(test.TestCase):
self.mox.StubOutWithMock(volumeops.vm_utils, 'vm_ref_or_raise')
self.mox.StubOutWithMock(volumeops.volume_utils, 'get_device_number')
+ connection_info = dict(driver_volume_type='iscsi', data='conn_data')
+
volumeops.vm_utils.vm_ref_or_raise('session', 'instance_1').AndReturn(
'vmref')
@@ -105,11 +110,12 @@ class VolumeAttachTestCase(test.TestCase):
'devnumber')
ops._connect_volume(
- 'conn_data', 'devnumber', 'instance_1', 'vmref', hotplug=False)
+ connection_info, 'devnumber', 'instance_1', 'vmref',
+ hotplug=False).AndReturn(('sruuid', 'vdiuuid'))
self.mox.ReplayAll()
ops.attach_volume(
- dict(driver_volume_type='iscsi', data='conn_data'),
+ connection_info,
'instance_1', 'mountpoint', hotplug=False)
def test_connect_volume_no_hotplug(self):
@@ -124,6 +130,8 @@ class VolumeAttachTestCase(test.TestCase):
vdi_ref = 'vdi_ref'
vbd_ref = 'vbd_ref'
connection_data = {'vdi_uuid': vdi_uuid}
+ connection_info = {'data': connection_data,
+ 'driver_volume_type': 'iscsi'}
vm_ref = 'vm_ref'
dev_number = 1
@@ -160,7 +168,53 @@ class VolumeAttachTestCase(test.TestCase):
self.mox.ReplayAll()
- ops._connect_volume(connection_data, dev_number, instance_name,
+ ops._connect_volume(connection_info, dev_number, instance_name,
vm_ref, hotplug=False)
self.assertEquals(False, called['VBD.plug'])
+
+ def test_connect_volume(self):
+ session = stubs.FakeSessionForVolumeTests('fake_uri')
+ ops = volumeops.VolumeOps(session)
+ sr_uuid = '1'
+ sr_label = 'Disk-for:None'
+ sr_params = ''
+ sr_ref = 'sr_ref'
+ vdi_uuid = '2'
+ vdi_ref = 'vdi_ref'
+ vbd_ref = 'vbd_ref'
+ connection_data = {'vdi_uuid': vdi_uuid}
+ connection_info = {'data': connection_data,
+ 'driver_volume_type': 'iscsi'}
+
+ called = collections.defaultdict(bool)
+
+ def fake_call_xenapi(self, method, *args, **kwargs):
+ called[method] = True
+
+ self.stubs.Set(ops._session, 'call_xenapi', fake_call_xenapi)
+
+ self.mox.StubOutWithMock(volumeops.volume_utils, 'parse_sr_info')
+ volumeops.volume_utils.parse_sr_info(
+ connection_data, sr_label).AndReturn(
+ tuple([sr_uuid, sr_label, sr_params]))
+
+ self.mox.StubOutWithMock(
+ volumeops.volume_utils, 'find_sr_by_uuid')
+ volumeops.volume_utils.find_sr_by_uuid(session, sr_uuid).AndReturn(
+ None)
+
+ self.mox.StubOutWithMock(
+ volumeops.volume_utils, 'introduce_sr')
+ volumeops.volume_utils.introduce_sr(
+ session, sr_uuid, sr_label, sr_params).AndReturn(sr_ref)
+
+ self.mox.StubOutWithMock(volumeops.volume_utils, 'introduce_vdi')
+ volumeops.volume_utils.introduce_vdi(
+ session, sr_ref, vdi_uuid=vdi_uuid).AndReturn(vdi_ref)
+
+ self.mox.ReplayAll()
+
+ ops.connect_volume(connection_info)
+
+ self.assertEquals(False, called['VBD.plug'])
diff --git a/nova/utils.py b/nova/utils.py
index 64606f4f8..3020781c8 100644
--- a/nova/utils.py
+++ b/nova/utils.py
@@ -44,6 +44,7 @@ from oslo.config import cfg
from nova import exception
from nova.openstack.common import excutils
from nova.openstack.common import importutils
+from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
from nova.openstack.common.rpc import common as rpc_common
@@ -97,6 +98,8 @@ BYTE_MULTIPLIERS = {
'k': 1024,
}
+synchronized = lockutils.synchronized_with_prefix('nova-')
+
def vpn_ping(address, port, timeout=0.05, session_id=None):
"""Sends a vpn negotiation packet and returns the server session.
@@ -155,71 +158,10 @@ def execute(*cmd, **kwargs):
def trycmd(*args, **kwargs):
- """
- A wrapper around execute() to more easily handle warnings and errors.
-
- Returns an (out, err) tuple of strings containing the output of
- the command's stdout and stderr. If 'err' is not empty then the
- command can be considered to have failed.
-
- :discard_warnings True | False. Defaults to False. If set to True,
- then for succeeding commands, stderr is cleared
-
- """
- discard_warnings = kwargs.pop('discard_warnings', False)
-
- try:
- out, err = execute(*args, **kwargs)
- failed = False
- except processutils.ProcessExecutionError, exn:
- out, err = '', str(exn)
- failed = True
-
- if not failed and discard_warnings and err:
- # Handle commands that output to stderr but otherwise succeed
- err = ''
-
- return out, err
-
-
-def ssh_execute(ssh, cmd, process_input=None,
- addl_env=None, check_exit_code=True):
- LOG.debug(_('Running cmd (SSH): %s'), cmd)
- if addl_env:
- raise exception.NovaException(_('Environment not supported over SSH'))
-
- if process_input:
- # This is (probably) fixable if we need it...
- msg = _('process_input not supported over SSH')
- raise exception.NovaException(msg)
-
- stdin_stream, stdout_stream, stderr_stream = ssh.exec_command(cmd)
- channel = stdout_stream.channel
-
- #stdin.write('process_input would go here')
- #stdin.flush()
-
- # NOTE(justinsb): This seems suspicious...
- # ...other SSH clients have buffering issues with this approach
- stdout = stdout_stream.read()
- stderr = stderr_stream.read()
- stdin_stream.close()
-
- exit_status = channel.recv_exit_status()
-
- # exit_status == -1 if no exit code was returned
- if exit_status != -1:
- LOG.debug(_('Result was %s') % exit_status)
- if check_exit_code and exit_status != 0:
- # TODO(mikal): I know this is a bit odd, but its needed for
- # consistency. I will move this method into processutils in a
- # later change.
- raise processutils.ProcessExecutionError(exit_code=exit_status,
- stdout=stdout,
- stderr=stderr,
- cmd=cmd)
-
- return (stdout, stderr)
+ """Convenience wrapper around oslo's trycmd() method."""
+ if 'run_as_root' in kwargs and not 'root_helper' in kwargs:
+ kwargs['root_helper'] = 'sudo nova-rootwrap %s' % CONF.rootwrap_config
+ return processutils.trycmd(*args, **kwargs)
def novadir():
@@ -655,19 +597,6 @@ def parse_server_string(server_str):
return ('', '')
-def bool_from_str(val):
- """Convert a string representation of a bool into a bool value."""
-
- if not val:
- return False
- try:
- return True if int(val) else False
- except ValueError:
- return val.lower() == 'true' or \
- val.lower() == 'yes' or \
- val.lower() == 'y'
-
-
def is_int_like(val):
"""Check if a value looks like an int."""
try:
diff --git a/nova/virt/baremetal/driver.py b/nova/virt/baremetal/driver.py
index 736b511b9..376921360 100755
--- a/nova/virt/baremetal/driver.py
+++ b/nova/virt/baremetal/driver.py
@@ -354,15 +354,21 @@ class BareMetalDriver(driver.ComputeDriver):
instance_name, mountpoint)
def get_info(self, instance):
- # NOTE(deva): compute/manager.py expects to get NotFound exception
- # so we convert from InstanceNotFound
inst_uuid = instance.get('uuid')
node = _get_baremetal_node_by_instance_uuid(inst_uuid)
pm = get_power_manager(node=node, instance=instance)
- ps = power_state.SHUTDOWN
- if pm.is_power_on():
- ps = power_state.RUNNING
- return {'state': ps,
+
+ # NOTE(deva): Power manager may not be able to determine power state
+ # in which case it may return "None" here.
+ ps = pm.is_power_on()
+ if ps:
+ pstate = power_state.RUNNING
+ elif ps is False:
+ pstate = power_state.SHUTDOWN
+ else:
+ pstate = power_state.NOSTATE
+
+ return {'state': pstate,
'max_mem': node['memory_mb'],
'mem': node['memory_mb'],
'num_cpu': node['cpus'],
diff --git a/nova/virt/baremetal/ipmi.py b/nova/virt/baremetal/ipmi.py
index d4377e6fa..5d4f2b0ed 100644
--- a/nova/virt/baremetal/ipmi.py
+++ b/nova/virt/baremetal/ipmi.py
@@ -138,17 +138,13 @@ class IPMI(base.PowerManager):
finally:
bm_utils.unlink_without_raise(pwfile)
- def _is_power(self, state):
- out_err = self._exec_ipmitool("power status")
- return out_err[0] == ("Chassis Power is %s\n" % state)
-
def _power_on(self):
"""Turn the power to this node ON."""
def _wait_for_power_on():
"""Called at an interval until the node's power is on."""
- if self._is_power("on"):
+ if self.is_power_on():
self.state = baremetal_states.ACTIVE
raise loopingcall.LoopingCallDone()
if self.retries > CONF.baremetal.ipmi_power_retry:
@@ -170,7 +166,7 @@ class IPMI(base.PowerManager):
def _wait_for_power_off():
"""Called at an interval until the node's power is off."""
- if self._is_power("off"):
+ if self.is_power_on() is False:
self.state = baremetal_states.DELETED
raise loopingcall.LoopingCallDone()
if self.retries > CONF.baremetal.ipmi_power_retry:
@@ -193,8 +189,15 @@ class IPMI(base.PowerManager):
LOG.exception(_("IPMI set next bootdev failed"))
def activate_node(self):
- """Turns the power to node ON."""
- if self._is_power("on") and self.state == baremetal_states.ACTIVE:
+ """Turns the power to node ON.
+
+ Sets node next-boot to PXE and turns the power on,
+ waiting up to ipmi_power_retry/2 seconds for confirmation
+ that the power is on.
+
+ :returns: One of baremetal_states.py, representing the new state.
+ """
+ if self.is_power_on() and self.state == baremetal_states.ACTIVE:
LOG.warning(_("Activate node called, but node %s "
"is already active") % self.address)
self._set_pxe_for_next_boot()
@@ -202,19 +205,44 @@ class IPMI(base.PowerManager):
return self.state
def reboot_node(self):
- """Cycles the power to a node."""
+ """Cycles the power to a node.
+
+ Turns the power off, sets next-boot to PXE, and turns the power on.
+ Each action waits up to ipmi_power_retry/2 seconds for confirmation
+ that the power state has changed.
+
+ :returns: One of baremetal_states.py, representing the new state.
+ """
self._power_off()
self._set_pxe_for_next_boot()
self._power_on()
return self.state
def deactivate_node(self):
- """Turns the power to node OFF, regardless of current state."""
+ """Turns the power to node OFF.
+
+ Turns the power off, and waits up to ipmi_power_retry/2 seconds
+ for confirmation that the power is off.
+
+ :returns: One of baremetal_states.py, representing the new state.
+ """
self._power_off()
return self.state
def is_power_on(self):
- return self._is_power("on")
+ """Check if the power is currently on.
+
+ :returns: True if on; False if off; None if unable to determine.
+ """
+ # NOTE(deva): string matching based on
+ # http://ipmitool.cvs.sourceforge.net/
+ # viewvc/ipmitool/ipmitool/lib/ipmi_chassis.c
+ res = self._exec_ipmitool("power status")[0]
+ if res == ("Chassis Power is on\n"):
+ return True
+ elif res == ("Chassis Power is off\n"):
+ return False
+ return None
def start_console(self):
if not self.port:
diff --git a/nova/virt/baremetal/pxe.py b/nova/virt/baremetal/pxe.py
index 795099ebc..4c63f2b07 100644
--- a/nova/virt/baremetal/pxe.py
+++ b/nova/virt/baremetal/pxe.py
@@ -25,7 +25,7 @@ import os
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common import fileutils
@@ -174,7 +174,7 @@ def get_pxe_config_file_path(instance):
def get_partition_sizes(instance):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
root_mb = instance_type['root_gb'] * 1024
swap_mb = instance_type['swap']
diff --git a/nova/virt/baremetal/tilera.py b/nova/virt/baremetal/tilera.py
index c926817cd..d9a065bf1 100755
--- a/nova/virt/baremetal/tilera.py
+++ b/nova/virt/baremetal/tilera.py
@@ -24,7 +24,7 @@ import os
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.openstack.common.db import exception as db_exc
from nova.openstack.common import fileutils
@@ -117,7 +117,7 @@ def get_tilera_nfs_path(node_id):
def get_partition_sizes(instance):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
root_mb = instance_type['root_gb'] * 1024
swap_mb = instance_type['swap']
diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py
index 22dd815d0..e110bf436 100644
--- a/nova/virt/baremetal/virtual_power_driver.py
+++ b/nova/virt/baremetal/virtual_power_driver.py
@@ -24,7 +24,6 @@ from nova import exception
from nova.openstack.common import importutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
-from nova import utils
from nova.virt.baremetal import baremetal_states
from nova.virt.baremetal import base
from nova.virt.baremetal import db
@@ -230,8 +229,8 @@ class VirtualPowerManager(base.PowerManager):
cmd = '%s %s' % (self._vp_cmd.base_cmd, cmd)
try:
- stdout, stderr = utils.ssh_execute(self._connection, cmd,
- check_exit_code=check_exit_code)
+ stdout, stderr = processutils.ssh_execute(
+ self._connection, cmd, check_exit_code=check_exit_code)
result = stdout.strip().splitlines()
LOG.debug('Result for run_command: %s' % result)
except processutils.ProcessExecutionError:
diff --git a/nova/virt/driver.py b/nova/virt/driver.py
index e2f9588a4..d0a670a3e 100755
--- a/nova/virt/driver.py
+++ b/nova/virt/driver.py
@@ -958,8 +958,8 @@ def load_compute_driver(virtapi, compute_driver=None):
compute_driver,
virtapi)
return utils.check_isinstance(driver, ComputeDriver)
- except ImportError as e:
- LOG.error(_("Unable to load the virtualization driver: %s") % (e))
+ except ImportError:
+ LOG.exception(_("Unable to load the virtualization driver"))
sys.exit(1)
diff --git a/nova/virt/fake.py b/nova/virt/fake.py
index 18774245f..c38dc9ed6 100755
--- a/nova/virt/fake.py
+++ b/nova/virt/fake.py
@@ -41,7 +41,7 @@ CONF.import_opt('host', 'nova.netconf')
LOG = logging.getLogger(__name__)
-_FAKE_NODES = [CONF.host]
+_FAKE_NODES = None
def set_nodes(nodes):
@@ -107,6 +107,8 @@ class FakeDriver(driver.ComputeDriver):
}
self._mounts = {}
self._interfaces = {}
+ if not _FAKE_NODES:
+ set_nodes([CONF.host])
def init_host(self, host):
return
diff --git a/nova/virt/firewall.py b/nova/virt/firewall.py
index b61b57cfb..cf290dd10 100644
--- a/nova/virt/firewall.py
+++ b/nova/virt/firewall.py
@@ -24,8 +24,8 @@ from nova import context
from nova import network
from nova.network import linux_net
from nova.openstack.common import importutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
+from nova import utils
from nova.virt import netutils
LOG = logging.getLogger(__name__)
@@ -453,7 +453,7 @@ class IptablesFirewallDriver(FirewallDriver):
self.do_refresh_instance_rules(instance)
self.iptables.apply()
- @lockutils.synchronized('iptables', 'nova-', external=True)
+ @utils.synchronized('iptables', external=True)
def _inner_do_refresh_rules(self, instance, ipv4_rules,
ipv6_rules):
self.remove_filters_for_instance(instance)
@@ -476,7 +476,7 @@ class IptablesFirewallDriver(FirewallDriver):
self._do_refresh_provider_fw_rules()
self.iptables.apply()
- @lockutils.synchronized('iptables', 'nova-', external=True)
+ @utils.synchronized('iptables', external=True)
def _do_refresh_provider_fw_rules(self):
"""Internal, synchronized version of refresh_provider_fw_rules."""
self._purge_provider_fw_rules()
diff --git a/nova/virt/hyperv/imagecache.py b/nova/virt/hyperv/imagecache.py
index 5d68bab61..85588a769 100644
--- a/nova/virt/hyperv/imagecache.py
+++ b/nova/virt/hyperv/imagecache.py
@@ -19,15 +19,16 @@ Image caching and management.
"""
import os
-from nova.compute import instance_types
+from oslo.config import cfg
+
+from nova.compute import flavors
from nova.openstack.common import excutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
+from nova import utils
from nova.virt.hyperv import pathutils
from nova.virt.hyperv import vhdutils
from nova.virt.hyperv import vmutils
from nova.virt import images
-from oslo.config import cfg
LOG = logging.getLogger(__name__)
@@ -51,7 +52,7 @@ class ImageCache(object):
def _get_root_vhd_size_gb(self, instance):
try:
# In case of resizes we need the old root disk size
- old_instance_type = instance_types.extract_instance_type(
+ old_instance_type = flavors.extract_instance_type(
instance, prefix='old_')
return old_instance_type['root_gb']
except KeyError:
@@ -76,7 +77,7 @@ class ImageCache(object):
root_vhd_size_gb,
path_parts[1])
- @lockutils.synchronized(resized_vhd_path, 'nova-')
+ @utils.synchronized(resized_vhd_path)
def copy_and_resize_vhd():
if not self._pathutils.exists(resized_vhd_path):
try:
@@ -101,7 +102,7 @@ class ImageCache(object):
base_vhd_dir = self._pathutils.get_base_vhd_dir()
vhd_path = os.path.join(base_vhd_dir, image_id + ".vhd")
- @lockutils.synchronized(vhd_path, 'nova-')
+ @utils.synchronized(vhd_path)
def fetch_image_if_not_existing():
if not self._pathutils.exists(vhd_path):
try:
diff --git a/nova/virt/hyperv/migrationops.py b/nova/virt/hyperv/migrationops.py
index 07bf453e5..ff8651efe 100644
--- a/nova/virt/hyperv/migrationops.py
+++ b/nova/virt/hyperv/migrationops.py
@@ -95,11 +95,25 @@ class MigrationOps(object):
LOG.exception(ex)
LOG.error(_("Cannot cleanup migration files"))
+ def _check_target_instance_type(self, instance, instance_type):
+ new_root_gb = instance_type['root_gb']
+ curr_root_gb = instance['root_gb']
+
+ if new_root_gb < curr_root_gb:
+ raise vmutils.VHDResizeException(_("Cannot resize the root disk "
+ "to a smaller size. Current "
+ "size: %(curr_root_gb)s GB. "
+ "Requested size: "
+ "%(new_root_gb)s GB") %
+ locals())
+
def migrate_disk_and_power_off(self, context, instance, dest,
instance_type, network_info,
block_device_info=None):
LOG.debug(_("migrate_disk_and_power_off called"), instance=instance)
+ self._check_target_instance_type(instance, instance_type)
+
self._vmops.power_off(instance)
instance_name = instance["name"]
@@ -218,8 +232,8 @@ class MigrationOps(object):
curr_size = vhd_info['MaxInternalSize']
new_size = instance['root_gb'] * 1024 ** 3
if new_size < curr_size:
- raise vmutils.HyperVException(_("Cannot resize a VHD to a "
- "smaller size"))
+ raise vmutils.VHDResizeException(_("Cannot resize a VHD "
+ "to a smaller size"))
elif new_size > curr_size:
self._resize_vhd(root_vhd_path, new_size)
diff --git a/nova/virt/hyperv/vmutils.py b/nova/virt/hyperv/vmutils.py
index 45fea329d..680ec2d61 100644
--- a/nova/virt/hyperv/vmutils.py
+++ b/nova/virt/hyperv/vmutils.py
@@ -37,11 +37,19 @@ CONF = cfg.CONF
LOG = logging.getLogger(__name__)
+# TODO(alexpilotti): Move the exceptions to a separate module
+# TODO(alexpilotti): Add more domain exceptions
class HyperVException(exception.NovaException):
def __init__(self, message=None):
super(HyperVException, self).__init__(message)
+# TODO(alexpilotti): Add a storage exception base class
+class VHDResizeException(HyperVException):
+ def __init__(self, message=None):
+ super(HyperVException, self).__init__(message)
+
+
class VMUtils(object):
def __init__(self, host='.'):
diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py
index 8f1e72ab0..39b6292b1 100644
--- a/nova/virt/libvirt/blockinfo.py
+++ b/nova/virt/libvirt/blockinfo.py
@@ -68,7 +68,7 @@ variables / types used
from oslo.config import cfg
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova import exception
from nova.virt import configdrive
from nova.virt import driver
@@ -300,7 +300,7 @@ def get_disk_mapping(virt_type, instance,
Returns the guest disk mapping for the devices."""
- inst_type = instance_types.extract_instance_type(instance)
+ inst_type = flavors.extract_instance_type(instance)
mapping = {}
diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py
index 729d27ea4..08a0566dd 100644
--- a/nova/virt/libvirt/config.py
+++ b/nova/virt/libvirt/config.py
@@ -789,6 +789,7 @@ class LibvirtConfigGuest(LibvirtConfigObject):
self.name = None
self.memory = 1024 * 1024 * 500
self.vcpus = 1
+ self.cpuset = None
self.cpu = None
self.cpu_shares = None
self.cpu_quota = None
@@ -812,7 +813,12 @@ class LibvirtConfigGuest(LibvirtConfigObject):
root.append(self._text_node("uuid", self.uuid))
root.append(self._text_node("name", self.name))
root.append(self._text_node("memory", self.memory))
- root.append(self._text_node("vcpu", self.vcpus))
+ if self.cpuset is not None:
+ vcpu = self._text_node("vcpu", self.vcpus)
+ vcpu.set("cpuset", self.cpuset)
+ root.append(vcpu)
+ else:
+ root.append(self._text_node("vcpu", self.vcpus))
def _format_os(self, root):
os = etree.Element("os")
diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py
index a0d2d0a7b..6af67bde5 100755
--- a/nova/virt/libvirt/driver.py
+++ b/nova/virt/libvirt/driver.py
@@ -63,7 +63,7 @@ from xml.dom import minidom
from nova.api.metadata import base as instance_metadata
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova.compute import vm_mode
@@ -211,6 +211,10 @@ libvirt_opts = [
default=[],
help='Specific cachemodes to use for different disk types '
'e.g: ["file=directsync","block=none"]'),
+ cfg.StrOpt('vcpu_pin_set',
+ default=None,
+ help='Which pcpus can be used by vcpus of instance '
+ 'e.g: "4-12,^8,15"'),
]
CONF = cfg.CONF
@@ -305,6 +309,7 @@ class LibvirtDriver(driver.ComputeDriver):
self._fc_wwpns = None
self._wrapped_conn = None
self._caps = None
+ self._vcpu_total = 0
self.read_only = read_only
self.firewall_driver = firewall.load_driver(
DEFAULT_FIREWALL_DRIVER,
@@ -1435,6 +1440,7 @@ class LibvirtDriver(driver.ComputeDriver):
ignored_states = (power_state.RUNNING,
power_state.SUSPENDED,
+ power_state.NOSTATE,
power_state.PAUSED)
if state in ignored_states:
@@ -1788,7 +1794,7 @@ class LibvirtDriver(driver.ComputeDriver):
user_id=instance['user_id'],
project_id=instance['project_id'])
- inst_type = instance_types.extract_instance_type(instance)
+ inst_type = flavors.extract_instance_type(instance)
# NOTE(ndipanov): Even if disk_mapping was passed in, which
# currently happens only on rescue - we still don't want to
@@ -2145,6 +2151,7 @@ class LibvirtDriver(driver.ComputeDriver):
guest.uuid = instance['uuid']
guest.memory = inst_type['memory_mb'] * 1024
guest.vcpus = inst_type['vcpus']
+ guest.cpuset = CONF.vcpu_pin_set
quota_items = ['cpu_shares', 'cpu_period', 'cpu_quota']
for key, value in inst_type['extra_specs'].iteritems():
@@ -2517,20 +2524,83 @@ class LibvirtDriver(driver.ComputeDriver):
return interfaces
+ def _get_cpuset_ids(self):
+ """
+ Parsing vcpu_pin_set config.
+
+ Returns a list of pcpu ids can be used by instances.
+ """
+ cpuset_ids = set()
+ cpuset_reject_ids = set()
+ for rule in CONF.vcpu_pin_set.split(','):
+ rule = rule.strip()
+ # Handle multi ','
+ if len(rule) < 1:
+ continue
+ # Note the count limit in the .split() call
+ range_parts = rule.split('-', 1)
+ if len(range_parts) > 1:
+ # So, this was a range; start by converting the parts to ints
+ try:
+ start, end = [int(p.strip()) for p in range_parts]
+ except ValueError:
+ raise exception.Invalid(_("Invalid range expression %r")
+ % rule)
+ # Make sure it's a valid range
+ if start > end:
+ raise exception.Invalid(_("Invalid range expression %r")
+ % rule)
+ # Add available pcpu ids to set
+ cpuset_ids |= set(range(start, end + 1))
+ elif rule[0] == '^':
+ # Not a range, the rule is an exclusion rule; convert to int
+ try:
+ cpuset_reject_ids.add(int(rule[1:].strip()))
+ except ValueError:
+ raise exception.Invalid(_("Invalid exclusion "
+ "expression %r") % rule)
+ else:
+ # OK, a single PCPU to include; convert to int
+ try:
+ cpuset_ids.add(int(rule))
+ except ValueError:
+ raise exception.Invalid(_("Invalid inclusion "
+ "expression %r") % rule)
+ # Use sets to handle the exclusion rules for us
+ cpuset_ids -= cpuset_reject_ids
+ if not cpuset_ids:
+ raise exception.Invalid(_("No CPUs available after parsing %r") %
+ CONF.vcpu_pin_set)
+ # This will convert the set to a sorted list for us
+ return sorted(cpuset_ids)
+
def get_vcpu_total(self):
- """Get vcpu number of physical computer.
+ """Get available vcpu number of physical computer.
- :returns: the number of cpu core.
+ :returns: the number of cpu core instances can be used.
"""
+ if self._vcpu_total != 0:
+ return self._vcpu_total
try:
- return self._conn.getInfo()[2]
+ total_pcpus = self._conn.getInfo()[2]
except libvirt.libvirtError:
LOG.warn(_("Cannot get the number of cpu, because this "
"function is not implemented for this platform. "))
return 0
+ if CONF.vcpu_pin_set is None:
+ self._vcpu_total = total_pcpus
+ return self._vcpu_total
+
+ available_ids = self._get_cpuset_ids()
+ if available_ids[-1] >= total_pcpus:
+ raise exception.Invalid(_("Invalid vcpu_pin_set config, "
+ "out of hypervisor cpu range."))
+ self._vcpu_total = len(available_ids)
+ return self._vcpu_total
+
def get_memory_mb_total(self):
"""Get the total memory size(MB) of physical computer.
@@ -3449,16 +3519,39 @@ class LibvirtDriver(driver.ComputeDriver):
"""Manage the local cache of images."""
self.image_cache_manager.verify_base_images(context, all_instances)
- def _cleanup_remote_migration(self, dest, inst_base, inst_base_resize):
+ def _cleanup_remote_migration(self, dest, inst_base, inst_base_resize,
+ shared_storage=False):
"""Used only for cleanup in case migrate_disk_and_power_off fails."""
try:
if os.path.exists(inst_base_resize):
utils.execute('rm', '-rf', inst_base)
utils.execute('mv', inst_base_resize, inst_base)
- utils.execute('ssh', dest, 'rm', '-rf', inst_base)
+ if not shared_storage:
+ utils.execute('ssh', dest, 'rm', '-rf', inst_base)
except Exception:
pass
+ def _is_storage_shared_with(self, dest, inst_base):
+ # NOTE (rmk): There are two methods of determining whether we are
+ # on the same filesystem: the source and dest IP are the
+ # same, or we create a file on the dest system via SSH
+ # and check whether the source system can also see it.
+ shared_storage = (dest == self.get_host_ip_addr())
+ if not shared_storage:
+ tmp_file = uuid.uuid4().hex + '.tmp'
+ tmp_path = os.path.join(inst_base, tmp_file)
+
+ try:
+ utils.execute('ssh', dest, 'touch', tmp_path)
+ if os.path.exists(tmp_path):
+ shared_storage = True
+ os.unlink(tmp_path)
+ else:
+ utils.execute('ssh', dest, 'rm', tmp_path)
+ except Exception:
+ pass
+ return shared_storage
+
def migrate_disk_and_power_off(self, context, instance, dest,
instance_type, network_info,
block_device_info=None):
@@ -3481,12 +3574,13 @@ class LibvirtDriver(driver.ComputeDriver):
# copy disks to destination
# rename instance dir to +_resize at first for using
# shared storage for instance dir (eg. NFS).
- same_host = (dest == self.get_host_ip_addr())
inst_base = libvirt_utils.get_instance_path(instance)
inst_base_resize = inst_base + "_resize"
+
+ shared_storage = self._is_storage_shared_with(dest, inst_base)
try:
utils.execute('mv', inst_base, inst_base_resize)
- if same_host:
+ if shared_storage:
dest = None
utils.execute('mkdir', '-p', inst_base)
else:
@@ -3502,7 +3596,7 @@ class LibvirtDriver(driver.ComputeDriver):
utils.execute('qemu-img', 'convert', '-f', 'qcow2',
'-O', 'qcow2', from_path, tmp_path)
- if same_host:
+ if shared_storage:
utils.execute('mv', tmp_path, img_path)
else:
libvirt_utils.copy_image(tmp_path, img_path, host=dest)
@@ -3513,7 +3607,8 @@ class LibvirtDriver(driver.ComputeDriver):
except Exception:
with excutils.save_and_reraise_exception():
self._cleanup_remote_migration(dest, inst_base,
- inst_base_resize)
+ inst_base_resize,
+ shared_storage)
return disk_info_text
diff --git a/nova/virt/libvirt/imagebackend.py b/nova/virt/libvirt/imagebackend.py
index b6b1b88aa..84686a82a 100755
--- a/nova/virt/libvirt/imagebackend.py
+++ b/nova/virt/libvirt/imagebackend.py
@@ -21,9 +21,9 @@ import os
from oslo.config import cfg
+from nova import exception
from nova.openstack.common import excutils
from nova.openstack.common import fileutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.disk import api as disk
@@ -138,8 +138,7 @@ class Image(object):
:filename: Name of the file in the image directory
:size: Size of created image in bytes (optional)
"""
- @lockutils.synchronized(filename, 'nova-', external=True,
- lock_path=self.lock_path)
+ @utils.synchronized(filename, external=True, lock_path=self.lock_path)
def call_if_not_exists(target, *args, **kwargs):
if not os.path.exists(target):
fetch_func(target=target, *args, **kwargs)
@@ -203,8 +202,7 @@ class Raw(Image):
self.driver_format = data.file_format or 'raw'
def create_image(self, prepare_template, base, size, *args, **kwargs):
- @lockutils.synchronized(base, 'nova-', external=True,
- lock_path=self.lock_path)
+ @utils.synchronized(base, external=True, lock_path=self.lock_path)
def copy_raw_image(base, target, size):
libvirt_utils.copy_image(base, target)
if size:
@@ -243,8 +241,7 @@ class Qcow2(Image):
self.preallocate = CONF.preallocate_images != 'none'
def create_image(self, prepare_template, base, size, *args, **kwargs):
- @lockutils.synchronized(base, 'nova-', external=True,
- lock_path=self.lock_path)
+ @utils.synchronized(base, external=True, lock_path=self.lock_path)
def copy_qcow2_image(base, target, size):
# TODO(pbrady): Consider copying the cow image here
# with preallocation=metadata set for performance reasons.
@@ -255,6 +252,13 @@ class Qcow2(Image):
if not os.path.exists(base):
prepare_template(target=base, *args, **kwargs)
+ # NOTE(cfb): Having a flavor that sets the root size to 0 and having
+ # nova effectively ignore that size and use the size of the
+ # image is considered a feature at this time, not a bug.
+ if size and size < disk.get_disk_size(base):
+ LOG.error('%s virtual size larger than flavor root disk size %s' %
+ (base, size))
+ raise exception.ImageTooLarge()
if not os.path.exists(self.path):
with utils.remove_path_on_error(self.path):
copy_qcow2_image(base, self.path, size)
@@ -309,8 +313,7 @@ class Lvm(Image):
return False
def create_image(self, prepare_template, base, size, *args, **kwargs):
- @lockutils.synchronized(base, 'nova-', external=True,
- lock_path=self.lock_path)
+ @utils.synchronized(base, external=True, lock_path=self.lock_path)
def create_lvm_image(base, size):
base_size = disk.get_disk_size(base)
resize = size > base_size
diff --git a/nova/virt/libvirt/imagecache.py b/nova/virt/libvirt/imagecache.py
index 8d1f71a96..0ef32a21d 100644
--- a/nova/virt/libvirt/imagecache.py
+++ b/nova/virt/libvirt/imagecache.py
@@ -34,7 +34,6 @@ from nova.compute import task_states
from nova.compute import vm_states
from nova.openstack.common import fileutils
from nova.openstack.common import jsonutils
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova import utils
from nova.virt.libvirt import utils as virtutils
@@ -174,8 +173,7 @@ def read_stored_info(target, field=None, timestamped=False):
lock_name = 'info-%s' % os.path.split(target)[-1]
lock_path = os.path.join(CONF.instances_path, 'locks')
- @lockutils.synchronized(lock_name, 'nova-', external=True,
- lock_path=lock_path)
+ @utils.synchronized(lock_name, external=True, lock_path=lock_path)
def read_file(info_file):
LOG.debug(_('Reading image info file: %s'), info_file)
with open(info_file, 'r') as f:
@@ -205,8 +203,7 @@ def write_stored_info(target, field=None, value=None):
lock_name = 'info-%s' % os.path.split(target)[-1]
lock_path = os.path.join(CONF.instances_path, 'locks')
- @lockutils.synchronized(lock_name, 'nova-', external=True,
- lock_path=lock_path)
+ @utils.synchronized(lock_name, external=True, lock_path=lock_path)
def write_file(info_file, field, value):
d = {}
@@ -399,8 +396,7 @@ class ImageCacheManager(object):
# Protect against other nova-computes performing checksums at the same
# time if we are using shared storage
- @lockutils.synchronized(lock_name, 'nova-', external=True,
- lock_path=self.lock_path)
+ @utils.synchronized(lock_name, external=True, lock_path=self.lock_path)
def inner_verify_checksum():
(stored_checksum, stored_timestamp) = read_stored_checksum(
base_file, timestamped=True)
diff --git a/nova/virt/libvirt/volume.py b/nova/virt/libvirt/volume.py
index 5f8d4bd72..eee25a52b 100644
--- a/nova/virt/libvirt/volume.py
+++ b/nova/virt/libvirt/volume.py
@@ -27,7 +27,6 @@ import urlparse
from oslo.config import cfg
from nova import exception
-from nova.openstack.common import lockutils
from nova.openstack.common import log as logging
from nova.openstack.common import loopingcall
from nova.openstack.common import processutils
@@ -192,7 +191,7 @@ class LibvirtISCSIVolumeDriver(LibvirtBaseVolumeDriver):
def _get_target_portals_from_iscsiadm_output(self, output):
return [line.split()[0] for line in output.splitlines()]
- @lockutils.synchronized('connect_volume', 'nova-')
+ @utils.synchronized('connect_volume')
def connect_volume(self, connection_info, disk_info):
"""Attach the volume to instance_name."""
conf = super(LibvirtISCSIVolumeDriver,
@@ -266,7 +265,7 @@ class LibvirtISCSIVolumeDriver(LibvirtBaseVolumeDriver):
conf.source_path = host_device
return conf
- @lockutils.synchronized('connect_volume', 'nova-')
+ @utils.synchronized('connect_volume')
def disconnect_volume(self, connection_info, disk_dev):
"""Detach the volume from instance_name."""
super(LibvirtISCSIVolumeDriver,
@@ -654,7 +653,7 @@ class LibvirtFibreChannelVolumeDriver(LibvirtBaseVolumeDriver):
return pci_num
- @lockutils.synchronized('connect_volume', 'nova-')
+ @utils.synchronized('connect_volume')
def connect_volume(self, connection_info, disk_info):
"""Attach the volume to instance_name."""
fc_properties = connection_info['data']
@@ -750,7 +749,7 @@ class LibvirtFibreChannelVolumeDriver(LibvirtBaseVolumeDriver):
conf.source_path = device_path
return conf
- @lockutils.synchronized('connect_volume', 'nova-')
+ @utils.synchronized('connect_volume')
def disconnect_volume(self, connection_info, mount_device):
"""Detach the volume from instance_name."""
super(LibvirtFibreChannelVolumeDriver,
diff --git a/nova/virt/powervm/blockdev.py b/nova/virt/powervm/blockdev.py
index 657e96f06..5b15c14bb 100644
--- a/nova/virt/powervm/blockdev.py
+++ b/nova/virt/powervm/blockdev.py
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2012 IBM Corp.
+# Copyright 2013 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@@ -20,12 +20,12 @@ import re
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import task_states
from nova.image import glance
from nova.openstack.common import excutils
from nova.openstack.common import log as logging
-from nova import utils
+from nova.openstack.common import processutils
from nova.virt import images
from nova.virt.powervm import command
from nova.virt.powervm import common
@@ -125,8 +125,10 @@ class PowerVMLocalVolumeAdapter(PowerVMDiskAdapter):
self.connection_data = connection
def _set_connection(self):
- if self._connection is None:
- self._connection = common.ssh_connect(self.connection_data)
+ # create a new connection or verify an existing connection
+ # and re-establish if the existing connection is dead
+ self._connection = common.check_connection(self._connection,
+ self.connection_data)
def create_volume(self, size):
"""Creates a logical volume with a minimum size
@@ -175,7 +177,7 @@ class PowerVMLocalVolumeAdapter(PowerVMDiskAdapter):
# calculate root device size in bytes
# we respect the minimum root device size in constants
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
size_gb = max(instance_type['root_gb'], constants.POWERVM_MIN_ROOT_GB)
size = size_gb * 1024 * 1024 * 1024
@@ -531,8 +533,8 @@ class PowerVMLocalVolumeAdapter(PowerVMDiskAdapter):
:param command: String with the command to run.
"""
self._set_connection()
- stdout, stderr = utils.ssh_execute(self._connection, cmd,
- check_exit_code=check_exit_code)
+ stdout, stderr = processutils.ssh_execute(
+ self._connection, cmd, check_exit_code=check_exit_code)
error_text = stderr.strip()
if error_text:
diff --git a/nova/virt/powervm/common.py b/nova/virt/powervm/common.py
index dd6517dcd..0fd2f84a4 100644
--- a/nova/virt/powervm/common.py
+++ b/nova/virt/powervm/common.py
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2012 IBM Corp.
+# Copyright 2013 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@@ -23,7 +23,6 @@ import paramiko
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
-from nova import utils
from nova.virt.powervm import constants
from nova.virt.powervm import exception
@@ -56,12 +55,40 @@ def ssh_connect(connection):
port=connection.port,
key_filename=connection.keyfile,
timeout=constants.POWERVM_CONNECTION_TIMEOUT)
+
+ LOG.debug("SSH connection with %s established successfully." %
+ connection.host)
+
+ # send TCP keepalive packets every 20 seconds
+ ssh.get_transport().set_keepalive(20)
+
return ssh
except Exception:
LOG.exception(_('Connection error connecting PowerVM manager'))
raise exception.PowerVMConnectionFailed()
+def check_connection(ssh, connection):
+ """
+ Checks the SSH connection to see if the transport is valid.
+ If the connection is dead, a new connection is created and returned.
+
+ :param ssh: an existing paramiko.SSHClient connection.
+ :param connection: a Connection object.
+ :returns: paramiko.SSHClient -- an active ssh connection.
+ :raises: PowerVMConnectionFailed -- if the ssh connection fails.
+ """
+ # if the ssh client is not set or the transport is dead, re-connect
+ if (ssh is None or
+ ssh.get_transport() is None or
+ not ssh.get_transport().is_active()):
+ LOG.debug("Connection to host %s will be established." %
+ connection.host)
+ ssh = ssh_connect(connection)
+
+ return ssh
+
+
def ssh_command_as_root(ssh_connection, cmd, check_exit_code=True):
"""Method to execute remote command as root.
@@ -85,7 +112,7 @@ def ssh_command_as_root(ssh_connection, cmd, check_exit_code=True):
stdin.flush()
exit_status = chan.recv_exit_status()
- # Lets handle the error just like nova.utils.ssh_execute does.
+ # Lets handle the error just like processutils.ssh_execute does.
if exit_status != -1:
LOG.debug(_('Result was %s') % exit_status)
if check_exit_code and exit_status != 0:
@@ -190,7 +217,7 @@ def vios_to_vios_auth(source, dest, conn_info):
dest_conn_obj = ssh_connect(dest_conn_info)
def run_command(conn_obj, cmd):
- stdout, stderr = utils.ssh_execute(conn_obj, cmd)
+ stdout, stderr = processutils.ssh_execute(conn_obj, cmd)
return stdout.strip().splitlines()
def build_keypair_on_source():
diff --git a/nova/virt/powervm/driver.py b/nova/virt/powervm/driver.py
index 603ee0b61..199b10704 100755
--- a/nova/virt/powervm/driver.py
+++ b/nova/virt/powervm/driver.py
@@ -19,7 +19,7 @@ import time
from oslo.config import cfg
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.image import glance
from nova.openstack.common import log as logging
from nova.virt import driver
@@ -290,7 +290,7 @@ class PowerVMDriver(driver.ComputeDriver):
"""
lpar_obj = self._powervm._create_lpar_instance(instance, network_info)
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
new_lv_size = instance_type['root_gb']
old_lv_size = disk_info['old_lv_size']
if 'root_disk_file' in disk_info:
diff --git a/nova/virt/powervm/operator.py b/nova/virt/powervm/operator.py
index b5ead9064..f78aeb475 100644
--- a/nova/virt/powervm/operator.py
+++ b/nova/virt/powervm/operator.py
@@ -1,6 +1,6 @@
# vim: tabstop=4 shiftwidth=4 softtabstop=4
-# Copyright 2012 IBM Corp.
+# Copyright 2013 IBM Corp.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
@@ -25,7 +25,6 @@ from nova.compute import power_state
from nova.openstack.common import excutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
-from nova import utils
from nova.virt.powervm import blockdev
from nova.virt.powervm import command
from nova.virt.powervm import common
@@ -465,8 +464,10 @@ class BaseOperator(object):
self.connection_data = connection
def _set_connection(self):
- if self._connection is None:
- self._connection = common.ssh_connect(self.connection_data)
+ # create a new connection or verify an existing connection
+ # and re-establish if the existing connection is dead
+ self._connection = common.check_connection(self._connection,
+ self.connection_data)
def get_lpar(self, instance_name, resource_type='lpar'):
"""Return a LPAR object by its instance name.
@@ -664,8 +665,8 @@ class BaseOperator(object):
:param command: String with the command to run.
"""
self._set_connection()
- stdout, stderr = utils.ssh_execute(self._connection, cmd,
- check_exit_code=check_exit_code)
+ stdout, stderr = processutils.ssh_execute(
+ self._connection, cmd, check_exit_code=check_exit_code)
error_text = stderr.strip()
if error_text:
diff --git a/nova/virt/storage_users.py b/nova/virt/storage_users.py
index 6555609a4..8e56a1c6c 100644
--- a/nova/virt/storage_users.py
+++ b/nova/virt/storage_users.py
@@ -19,13 +19,13 @@ import json
import os
import time
-from nova.openstack.common import lockutils
+from nova import utils
TWENTY_FOUR_HOURS = 3600 * 24
-@lockutils.synchronized('storage-registry-lock', 'nova-', external=True)
+@utils.synchronized('storage-registry-lock', external=True)
def register_storage_use(storage_path, hostname):
"""Idenfity the id of this instance storage."""
@@ -45,7 +45,7 @@ def register_storage_use(storage_path, hostname):
f.write(json.dumps(d))
-@lockutils.synchronized('storage-registry-lock', 'nova-', external=True)
+@utils.synchronized('storage-registry-lock', external=True)
def get_storage_users(storage_path):
"""Get a list of all the users of this storage path."""
diff --git a/nova/virt/vmwareapi/fake.py b/nova/virt/vmwareapi/fake.py
index ab4bf10e0..86b6e5fc2 100644
--- a/nova/virt/vmwareapi/fake.py
+++ b/nova/virt/vmwareapi/fake.py
@@ -308,7 +308,13 @@ class HostSystem(ManagedObject):
config.product = product
summary.config = config
+ pnic_do = DataObject()
+ pnic_do.device = "vmnic0"
+ net_info_pnic = DataObject()
+ net_info_pnic.PhysicalNic = [pnic_do]
+
self.set("summary", summary)
+ self.set("config.network.pnic", net_info_pnic)
if _db_content.get("Network", None) is None:
create_network()
diff --git a/nova/virt/vmwareapi/vif.py b/nova/virt/vmwareapi/vif.py
index cb8ce52c0..c98f619e1 100644
--- a/nova/virt/vmwareapi/vif.py
+++ b/nova/virt/vmwareapi/vif.py
@@ -45,17 +45,15 @@ def ensure_vlan_bridge(session, vif, cluster=None, create_vlan=True):
# Get the vSwitch associated with the Physical Adapter
vswitch_associated = network_util.get_vswitch_for_vlan_interface(
session, vlan_interface, cluster)
+ if vswitch_associated is None:
+ raise exception.SwitchNotFoundForNetworkAdapter(
+ adapter=vlan_interface)
+ # Check if the vlan_interface physical network adapter exists on the
+ # host.
+ if not network_util.check_if_vlan_interface_exists(session,
+ vlan_interface, cluster):
+ raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
if create_vlan:
- # Check if the vlan_interface physical network adapter exists on the
- # host.
- if not network_util.check_if_vlan_interface_exists(session,
- vlan_interface,
- cluster):
- raise exception.NetworkAdapterNotFound(adapter=vlan_interface)
-
- if vswitch_associated is None:
- raise exception.SwitchNotFoundForNetworkAdapter(
- adapter=vlan_interface)
if network_ref is None:
# Create a port group on the vSwitch associated with the
@@ -69,15 +67,15 @@ def ensure_vlan_bridge(session, vif, cluster=None, create_vlan=True):
_get_pg_info = network_util.get_vlanid_and_vswitch_for_portgroup
pg_vlanid, pg_vswitch = _get_pg_info(session, bridge, cluster)
- # Check if the vswitch associated is proper
- if pg_vswitch != vswitch_associated:
- raise exception.InvalidVLANPortGroup(
- bridge=bridge, expected=vswitch_associated,
- actual=pg_vswitch)
+ # Check if the vswitch associated is proper
+ if pg_vswitch != vswitch_associated:
+ raise exception.InvalidVLANPortGroup(
+ bridge=bridge, expected=vswitch_associated,
+ actual=pg_vswitch)
- # Check if the vlan id is proper for the port group
- if pg_vlanid != vlan_num:
- raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
+ # Check if the vlan id is proper for the port group
+ if pg_vlanid != vlan_num:
+ raise exception.InvalidVLANTag(bridge=bridge, tag=vlan_num,
pgroup=pg_vlanid)
else:
if network_ref is None:
diff --git a/nova/virt/vmwareapi/vm_util.py b/nova/virt/vmwareapi/vm_util.py
index 9fb8e9bd5..4287b4eaa 100644
--- a/nova/virt/vmwareapi/vm_util.py
+++ b/nova/virt/vmwareapi/vm_util.py
@@ -553,7 +553,6 @@ def get_datastore_ref_and_name(session, cluster=None, host=None):
"Datastore", data_store_mors,
["summary.type", "summary.name",
"summary.capacity", "summary.freeSpace"])
-
for elem in data_stores:
ds_name = None
ds_type = None
@@ -570,8 +569,6 @@ def get_datastore_ref_and_name(session, cluster=None, host=None):
ds_free = prop.val
# Local storage identifier
if ds_type == "VMFS" or ds_type == "NFS":
- data_store_name = ds_name
- return elem.obj, data_store_name, ds_cap, ds_free
+ return elem.obj, ds_name, ds_cap, ds_free
- if data_store_name is None:
raise exception.DatastoreNotFound()
diff --git a/nova/virt/xenapi/driver.py b/nova/virt/xenapi/driver.py
index 074b43f22..5bc1a3049 100755
--- a/nova/virt/xenapi/driver.py
+++ b/nova/virt/xenapi/driver.py
@@ -239,17 +239,8 @@ class XenAPIDriver(driver.ComputeDriver):
"""Transfers the VHD of a running instance to another host, then shuts
off the instance copies over the COW disk"""
# NOTE(vish): Xen currently does not use network info.
- rv = self._vmops.migrate_disk_and_power_off(context, instance,
- dest, instance_type)
- block_device_mapping = driver.block_device_info_get_mapping(
- block_device_info)
- name_label = self._vmops._get_orig_vm_name_label(instance)
- for vol in block_device_mapping:
- connection_info = vol['connection_info']
- mount_device = vol['mount_device'].rpartition("/")[2]
- self._volumeops.detach_volume(connection_info,
- name_label, mount_device)
- return rv
+ return self._vmops.migrate_disk_and_power_off(context, instance,
+ dest, instance_type, block_device_info)
def suspend(self, instance):
"""suspend the specified instance."""
@@ -372,7 +363,7 @@ class XenAPIDriver(driver.ComputeDriver):
mountpoint)
def detach_volume(self, connection_info, instance, mountpoint):
- """Detach volume storage to VM instance."""
+ """Detach volume storage from VM instance."""
return self._volumeops.detach_volume(connection_info,
instance['name'],
mountpoint)
@@ -504,7 +495,10 @@ class XenAPIDriver(driver.ComputeDriver):
at compute manager.
"""
# TODO(JohnGarbutt) look again when boot-from-volume hits trunk
- pass
+ pre_live_migration_result = {}
+ pre_live_migration_result['sr_uuid_map'] = \
+ self._vmops.attach_block_device_volumes(block_device_info)
+ return pre_live_migration_result
def post_live_migration_at_destination(self, ctxt, instance_ref,
network_info, block_migration,
diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py
index 904f12e30..3f2c6835f 100644
--- a/nova/virt/xenapi/vm_utils.py
+++ b/nova/virt/xenapi/vm_utils.py
@@ -37,7 +37,7 @@ from oslo.config import cfg
from nova.api.metadata import base as instance_metadata
from nova import block_device
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova import exception
@@ -45,6 +45,7 @@ from nova.image import glance
from nova.openstack.common import excutils
from nova.openstack.common import log as logging
from nova.openstack.common import processutils
+from nova.openstack.common import strutils
from nova import utils
from nova.virt import configdrive
from nova.virt.disk import api as disk
@@ -210,7 +211,7 @@ def create_vm(session, instance, name_label, kernel, ramdisk,
3. Using hardware virtualization
"""
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
mem = str(long(instance_type['memory_mb']) * 1024 * 1024)
vcpus = str(instance_type['vcpus'])
@@ -285,7 +286,7 @@ def destroy_vm(session, instance, vm_ref):
def clean_shutdown_vm(session, instance, vm_ref):
- if _is_vm_shutdown(session, vm_ref):
+ if is_vm_shutdown(session, vm_ref):
LOG.warn(_("VM already halted, skipping shutdown..."),
instance=instance)
return False
@@ -300,7 +301,7 @@ def clean_shutdown_vm(session, instance, vm_ref):
def hard_shutdown_vm(session, instance, vm_ref):
- if _is_vm_shutdown(session, vm_ref):
+ if is_vm_shutdown(session, vm_ref):
LOG.warn(_("VM already halted, skipping shutdown..."),
instance=instance)
return False
@@ -314,7 +315,7 @@ def hard_shutdown_vm(session, instance, vm_ref):
return True
-def _is_vm_shutdown(session, vm_ref):
+def is_vm_shutdown(session, vm_ref):
vm_rec = session.call_xenapi("VM.get_record", vm_ref)
state = compile_info(vm_rec)['state']
if state == power_state.SHUTDOWN:
@@ -323,7 +324,7 @@ def _is_vm_shutdown(session, vm_ref):
def ensure_free_mem(session, instance):
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
mem = long(instance_type['memory_mb']) * 1024 * 1024
host = session.get_xenapi_host()
host_free_mem = long(session.call_xenapi("host.compute_free_memory",
@@ -777,7 +778,7 @@ def resize_disk(session, instance, vdi_ref, instance_type):
def auto_configure_disk(session, vdi_ref, new_gb):
"""Partition and resize FS to match the size specified by
- instance_types.root_gb.
+ flavors.root_gb.
This is a fail-safe to prevent accidentally destroying data on a disk
erroneously marked as auto_disk_config=True.
@@ -998,7 +999,7 @@ def _create_image(context, session, instance, name_label, image_id,
elif cache_images == 'some':
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
try:
- cache = utils.bool_from_str(sys_meta['image_cache_in_nova'])
+ cache = strutils.bool_from_string(sys_meta['image_cache_in_nova'])
except KeyError:
cache = False
elif cache_images == 'none':
@@ -1091,7 +1092,8 @@ def _image_uses_bittorrent(context, instance):
elif xenapi_torrent_images == 'some':
sys_meta = utils.metadata_to_dict(instance['system_metadata'])
try:
- bittorrent = utils.bool_from_str(sys_meta['image_bittorrent'])
+ bittorrent = strutils.bool_from_string(
+ sys_meta['image_bittorrent'])
except KeyError:
pass
elif xenapi_torrent_images == 'none':
@@ -1118,6 +1120,45 @@ def _fetch_vhd_image(context, session, instance, image_id):
if _image_uses_bittorrent(context, instance):
plugin_name = 'bittorrent'
callback = None
+ _add_bittorrent_params(params)
+ else:
+ plugin_name = 'glance'
+ callback = _generate_glance_callback(context)
+
+ vdis = _fetch_using_dom0_plugin_with_retry(
+ context, session, image_id, plugin_name, params,
+ callback=callback)
+
+ sr_ref = safe_find_sr(session)
+ _scan_sr(session, sr_ref)
+
+ try:
+ _check_vdi_size(context, session, instance, vdis['root']['uuid'])
+ except Exception:
+ with excutils.save_and_reraise_exception():
+ for key in vdis:
+ vdi = vdis[key]
+ vdi_uuid = vdi['uuid']
+ vdi_ref = session.call_xenapi('VDI.get_by_uuid', vdi_uuid)
+ destroy_vdi(session, vdi_ref)
+
+ return vdis
+
+
+def _generate_glance_callback(context):
+ glance_api_servers = glance.get_api_servers()
+
+ def pick_glance(params):
+ g_host, g_port, g_use_ssl = glance_api_servers.next()
+ params['glance_host'] = g_host
+ params['glance_port'] = g_port
+ params['glance_use_ssl'] = g_use_ssl
+ params['auth_token'] = getattr(context, 'auth_token', None)
+
+ return pick_glance
+
+
+def _add_bittorrent_params(params):
params['torrent_base_url'] = CONF.xenapi_torrent_base_url
params['torrent_seed_duration'] = CONF.xenapi_torrent_seed_duration
params['torrent_seed_chance'] = CONF.xenapi_torrent_seed_chance
@@ -1131,28 +1172,6 @@ def _fetch_vhd_image(context, session, instance, image_id):
CONF.xenapi_torrent_download_stall_cutoff
params['torrent_max_seeder_processes_per_host'] =\
CONF.xenapi_torrent_max_seeder_processes_per_host
- else:
- plugin_name = 'glance'
- glance_api_servers = glance.get_api_servers()
-
- def pick_glance(params):
- g_host, g_port, g_use_ssl = glance_api_servers.next()
- params['glance_host'] = g_host
- params['glance_port'] = g_port
- params['glance_use_ssl'] = g_use_ssl
- params['auth_token'] = getattr(context, 'auth_token', None)
-
- callback = pick_glance
-
- vdis = _fetch_using_dom0_plugin_with_retry(
- context, session, image_id, plugin_name, params,
- callback=callback)
-
- sr_ref = safe_find_sr(session)
- _scan_sr(session, sr_ref)
-
- _check_vdi_size(context, session, instance, vdis['root']['uuid'])
- return vdis
def _get_vdi_chain_size(session, vdi_uuid):
@@ -1177,7 +1196,7 @@ def _check_vdi_size(context, session, instance, vdi_uuid):
# FIXME(jk0): this was copied directly from compute.manager.py, let's
# refactor this to a common area
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
allowed_size_gb = instance_type['root_gb']
allowed_size_bytes = allowed_size_gb * 1024 * 1024 * 1024
@@ -2059,6 +2078,21 @@ def _write_partition(virtual_size, dev):
LOG.debug(_('Writing partition table %s done.'), dev_path)
+def _get_min_sectors(partition_path, block_size=4096):
+ stdout, _err = utils.execute('resize2fs', '-P', partition_path,
+ run_as_root=True)
+ min_size_blocks = long(re.sub('[^0-9]', '', stdout))
+ min_size_bytes = min_size_blocks * block_size
+ return min_size_bytes / SECTOR_SIZE
+
+
+def _repair_filesystem(partition_path):
+ # Exit Code 1 = File system errors corrected
+ # 2 = File system errors corrected, system needs a reboot
+ utils.execute('e2fsck', '-f', '-y', partition_path, run_as_root=True,
+ check_exit_code=[0, 1, 2])
+
+
def _resize_part_and_fs(dev, start, old_sectors, new_sectors):
"""Resize partition and fileystem.
@@ -2072,10 +2106,7 @@ def _resize_part_and_fs(dev, start, old_sectors, new_sectors):
partition_path = utils.make_dev_path(dev, partition=1)
# Replay journal if FS wasn't cleanly unmounted
- # Exit Code 1 = File system errors corrected
- # 2 = File system errors corrected, system needs a reboot
- utils.execute('e2fsck', '-f', '-y', partition_path, run_as_root=True,
- check_exit_code=[0, 1, 2])
+ _repair_filesystem(partition_path)
# Remove ext3 journal (making it ext2)
utils.execute('tune2fs', '-O ^has_journal', partition_path,
@@ -2083,6 +2114,12 @@ def _resize_part_and_fs(dev, start, old_sectors, new_sectors):
if new_sectors < old_sectors:
# Resizing down, resize filesystem before partition resize
+ min_sectors = _get_min_sectors(partition_path)
+ if min_sectors >= new_sectors:
+ reason = _('Resize down not allowed because minimum '
+ 'filesystem sectors %(min_sectors)d is too big '
+ 'for target sectors %(new_sectors)d')
+ raise exception.ResizeError(reason=(reason % locals()))
utils.execute('resize2fs', partition_path, '%ds' % size,
run_as_root=True)
diff --git a/nova/virt/xenapi/vmops.py b/nova/virt/xenapi/vmops.py
index e7dd3cff0..034556809 100644
--- a/nova/virt/xenapi/vmops.py
+++ b/nova/virt/xenapi/vmops.py
@@ -29,7 +29,7 @@ from oslo.config import cfg
from nova import block_device
from nova.compute import api as compute
-from nova.compute import instance_types
+from nova.compute import flavors
from nova.compute import power_state
from nova.compute import task_states
from nova.compute import vm_mode
@@ -209,6 +209,9 @@ class VMOps(object):
return nova_uuids
def confirm_migration(self, migration, instance, network_info):
+ self._destroy_orig_vm(instance, network_info)
+
+ def _destroy_orig_vm(self, instance, network_info):
name_label = self._get_orig_vm_name_label(instance)
vm_ref = vm_utils.lookup(self._session, name_label)
return self._destroy(instance, vm_ref, network_info=network_info)
@@ -227,6 +230,9 @@ class VMOps(object):
hotplug=False)
def finish_revert_migration(self, instance, block_device_info=None):
+ self._restore_orig_vm_and_cleanup_orphan(instance, block_device_info)
+
+ def _restore_orig_vm_and_cleanup_orphan(self, instance, block_device_info):
# NOTE(sirp): the original vm was suffixed with '-orig'; find it using
# the old suffix, remove the suffix, then power it back on.
name_label = self._get_orig_vm_name_label(instance)
@@ -564,7 +570,7 @@ class VMOps(object):
def _attach_disks(self, instance, vm_ref, name_label, vdis,
disk_image_type, admin_password=None, files=None):
ctx = nova_context.get_admin_context()
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
# Attach (required) root disk
if disk_image_type == vm_utils.ImageType.DISK_ISO:
@@ -689,7 +695,7 @@ class VMOps(object):
agent.resetnetwork()
# Set VCPU weight
- instance_type = instance_types.extract_instance_type(instance)
+ instance_type = flavors.extract_instance_type(instance)
vcpu_weight = instance_type['vcpu_weight']
if vcpu_weight is not None:
LOG.debug(_("Setting VCPU weight"), instance=instance)
@@ -797,53 +803,84 @@ class VMOps(object):
self._virtapi.instance_update(context, instance['uuid'],
{'progress': progress})
+ def _resize_ensure_vm_is_shutdown(self, instance, vm_ref):
+ if vm_utils.is_vm_shutdown(self._session, vm_ref):
+ LOG.debug(_("VM was already shutdown."), instance=instance)
+ return
+
+ if not vm_utils.clean_shutdown_vm(self._session, instance, vm_ref):
+ LOG.debug(_("Clean shutdown did not complete successfully, "
+ "trying hard shutdown."), instance=instance)
+ if not vm_utils.hard_shutdown_vm(self._session, instance, vm_ref):
+ raise exception.ResizeError(
+ reason=_("Unable to terminate instance."))
+
def _migrate_disk_resizing_down(self, context, instance, dest,
instance_type, vm_ref, sr_path):
- # 1. NOOP since we're not transmitting the base-copy separately
- self._update_instance_progress(context, instance,
- step=1,
- total_steps=RESIZE_TOTAL_STEPS)
+ if not instance['auto_disk_config']:
+ reason = _('Resize down not allowed without auto_disk_config')
+ raise exception.ResizeError(reason=reason)
- vdi_ref, vm_vdi_rec = vm_utils.get_vdi_for_vm_safely(
- self._session, vm_ref)
- vdi_uuid = vm_vdi_rec['uuid']
+ step = make_step_decorator(context, instance,
+ self._virtapi.instance_update)
- old_gb = instance['root_gb']
- new_gb = instance_type['root_gb']
- LOG.debug(_("Resizing down VDI %(vdi_uuid)s from "
- "%(old_gb)dGB to %(new_gb)dGB"), locals(),
- instance=instance)
+ @step
+ def fake_step_to_match_resizing_up():
+ pass
- # 2. Power down the instance before resizing
- if not vm_utils.clean_shutdown_vm(self._session, instance, vm_ref):
- LOG.debug(_("Clean shutdown did not complete successfully, "
- "trying hard shutdown."), instance=instance)
- vm_utils.hard_shutdown_vm(self._session, instance, vm_ref)
- self._update_instance_progress(context, instance,
- step=2,
- total_steps=RESIZE_TOTAL_STEPS)
+ @step
+ def rename_and_power_off_vm(undo_mgr):
+ self._resize_ensure_vm_is_shutdown(instance, vm_ref)
+ self._apply_orig_vm_name_label(instance, vm_ref)
- # 3. Copy VDI, resize partition and filesystem, forget VDI,
- # truncate VHD
- new_ref, new_uuid = vm_utils.resize_disk(self._session,
- instance,
- vdi_ref,
- instance_type)
- self._update_instance_progress(context, instance,
- step=3,
- total_steps=RESIZE_TOTAL_STEPS)
+ def restore_orig_vm():
+ # Do not need to restore block devices, not yet been removed
+ self._restore_orig_vm_and_cleanup_orphan(instance, None)
- # 4. Transfer the new VHD
- self._migrate_vhd(instance, new_uuid, dest, sr_path, 0)
- self._update_instance_progress(context, instance,
- step=4,
- total_steps=RESIZE_TOTAL_STEPS)
+ undo_mgr.undo_with(restore_orig_vm)
+
+ @step
+ def create_copy_vdi_and_resize(undo_mgr, old_vdi_ref):
+ new_vdi_ref, new_vdi_uuid = vm_utils.resize_disk(self._session,
+ instance, old_vdi_ref, instance_type)
- # Clean up VDI now that it's been copied
- vm_utils.destroy_vdi(self._session, new_ref)
+ def cleanup_vdi_copy():
+ vm_utils.destroy_vdi(self._session, new_vdi_ref)
+
+ undo_mgr.undo_with(cleanup_vdi_copy)
+
+ return new_vdi_ref, new_vdi_uuid
+
+ @step
+ def transfer_vhd_to_dest(new_vdi_ref, new_vdi_uuid):
+ self._migrate_vhd(instance, new_vdi_uuid, dest, sr_path, 0)
+ # Clean up VDI now that it's been copied
+ vm_utils.destroy_vdi(self._session, new_vdi_ref)
+
+ @step
+ def fake_step_to_be_executed_by_finish_migration():
+ pass
+
+ undo_mgr = utils.UndoManager()
+ try:
+ fake_step_to_match_resizing_up()
+ rename_and_power_off_vm(undo_mgr)
+ old_vdi_ref, _ignore = vm_utils.get_vdi_for_vm_safely(
+ self._session, vm_ref)
+ new_vdi_ref, new_vdi_uuid = create_copy_vdi_and_resize(
+ undo_mgr, old_vdi_ref)
+ transfer_vhd_to_dest(new_vdi_ref, new_vdi_uuid)
+ except Exception, error:
+ msg = _("_migrate_disk_resizing_down failed. "
+ "Restoring orig vm due_to: %{exception}.")
+ LOG.exception(msg, instance=instance)
+ undo_mgr._rollback()
+ raise exception.InstanceFaultRollback(error)
def _migrate_disk_resizing_up(self, context, instance, dest, vm_ref,
sr_path):
+ self._apply_orig_vm_name_label(instance, vm_ref)
+
# 1. Create Snapshot
label = "%s-snapshot" % instance['name']
with vm_utils.snapshot_attached_here(
@@ -865,10 +902,7 @@ class VMOps(object):
total_steps=RESIZE_TOTAL_STEPS)
# 3. Now power down the instance
- if not vm_utils.clean_shutdown_vm(self._session, instance, vm_ref):
- LOG.debug(_("Clean shutdown did not complete successfully, "
- "trying hard shutdown."), instance=instance)
- vm_utils.hard_shutdown_vm(self._session, instance, vm_ref)
+ self._resize_ensure_vm_is_shutdown(instance, vm_ref)
self._update_instance_progress(context, instance,
step=3,
total_steps=RESIZE_TOTAL_STEPS)
@@ -882,8 +916,15 @@ class VMOps(object):
step=4,
total_steps=RESIZE_TOTAL_STEPS)
+ def _apply_orig_vm_name_label(self, instance, vm_ref):
+ # NOTE(sirp): in case we're resizing to the same host (for dev
+ # purposes), apply a suffix to name-label so the two VM records
+ # extant until a confirm_resize don't collide.
+ name_label = self._get_orig_vm_name_label(instance)
+ vm_utils.set_vm_name_label(self._session, vm_ref, name_label)
+
def migrate_disk_and_power_off(self, context, instance, dest,
- instance_type):
+ instance_type, block_device_info):
"""Copies a VHD from one host machine to another, possibly
resizing filesystem before hand.
@@ -891,23 +932,17 @@ class VMOps(object):
:param dest: the destination host machine.
:param instance_type: instance_type to resize to
"""
- vm_ref = self._get_vm_opaque_ref(instance)
- sr_path = vm_utils.get_sr_path(self._session)
- resize_down = instance['root_gb'] > instance_type['root_gb']
- if resize_down and not instance['auto_disk_config']:
- reason = _('Resize down not allowed without auto_disk_config')
- raise exception.ResizeError(reason=reason)
-
# 0. Zero out the progress to begin
self._update_instance_progress(context, instance,
step=0,
total_steps=RESIZE_TOTAL_STEPS)
- # NOTE(sirp): in case we're resizing to the same host (for dev
- # purposes), apply a suffix to name-label so the two VM records
- # extant until a confirm_resize don't collide.
- name_label = self._get_orig_vm_name_label(instance)
- vm_utils.set_vm_name_label(self._session, vm_ref, name_label)
+ vm_ref = self._get_vm_opaque_ref(instance)
+ sr_path = vm_utils.get_sr_path(self._session)
+
+ old_gb = instance['root_gb']
+ new_gb = instance_type['root_gb']
+ resize_down = old_gb > new_gb
if resize_down:
self._migrate_disk_resizing_down(
@@ -916,12 +951,24 @@ class VMOps(object):
self._migrate_disk_resizing_up(
context, instance, dest, vm_ref, sr_path)
+ self._detach_block_devices_from_orig_vm(instance, block_device_info)
+
# NOTE(sirp): disk_info isn't used by the xenapi driver, instead it
# uses a staging-area (/images/instance<uuid>) and sequence-numbered
# VHDs to figure out how to reconstruct the VDI chain after syncing
disk_info = {}
return disk_info
+ def _detach_block_devices_from_orig_vm(self, instance, block_device_info):
+ block_device_mapping = virt_driver.block_device_info_get_mapping(
+ block_device_info)
+ name_label = self._get_orig_vm_name_label(instance)
+ for vol in block_device_mapping:
+ connection_info = vol['connection_info']
+ mount_device = vol['mount_device'].rpartition("/")[2]
+ self._volumeops.detach_volume(connection_info, name_label,
+ mount_device)
+
def _resize_instance(self, instance, root_vdi):
"""Resize an instances root disk."""
@@ -1549,15 +1596,17 @@ class VMOps(object):
return self._make_plugin_call('xenstore.py', 'delete_record', instance,
vm_ref=vm_ref, path=path)
- def _make_plugin_call(self, plugin, method, instance, vm_ref=None,
+ def _make_plugin_call(self, plugin, method, instance=None, vm_ref=None,
**addl_args):
"""
Abstracts out the process of calling a method of a xenapi plugin.
Any errors raised by the plugin will in turn raise a RuntimeError here.
"""
- vm_ref = vm_ref or self._get_vm_opaque_ref(instance)
- vm_rec = self._session.call_xenapi("VM.get_record", vm_ref)
- args = {'dom_id': vm_rec['domid']}
+ args = {}
+ if instance or vm_ref:
+ vm_ref = vm_ref or self._get_vm_opaque_ref(instance)
+ vm_rec = self._session.call_xenapi("VM.get_record", vm_ref)
+ args['dom_id'] = vm_rec['domid']
args.update(addl_args)
try:
return self._session.call_plugin(plugin, method, args)
@@ -1660,6 +1709,21 @@ class VMOps(object):
raise exception.MigrationPreCheckError(reason=msg)
return migrate_data
+ def _get_iscsi_srs(self, ctxt, instance_ref):
+ vm_ref = self._get_vm_opaque_ref(instance_ref)
+ vbd_refs = self._session.call_xenapi("VM.get_VBDs", vm_ref)
+
+ iscsi_srs = []
+
+ for vbd_ref in vbd_refs:
+ vdi_ref = self._session.call_xenapi("VBD.get_VDI", vbd_ref)
+ # Check if it's on an iSCSI SR
+ sr_ref = self._session.call_xenapi("VDI.get_SR", vdi_ref)
+ if self._session.call_xenapi("SR.get_type", sr_ref) == 'iscsi':
+ iscsi_srs.append(sr_ref)
+
+ return iscsi_srs
+
def check_can_live_migrate_destination(self, ctxt, instance_ref,
block_migration=False,
disk_over_commit=False):
@@ -1687,6 +1751,20 @@ class VMOps(object):
# block migration work will be able to resolve this
return dest_check_data
+ def _is_xsm_sr_check_relaxed(self):
+ try:
+ return self.cached_xsm_sr_relaxed
+ except AttributeError:
+ config_value = None
+ try:
+ config_value = self._make_plugin_call('config_file',
+ 'get_val',
+ key='relax-xsm-sr-check')
+ except Exception as exc:
+ LOG.exception(exc)
+ self.cached_xsm_sr_relaxed = config_value == "true"
+ return self.cached_xsm_sr_relaxed
+
def check_can_live_migrate_source(self, ctxt, instance_ref,
dest_check_data):
"""Check if it's possible to execute live migration on the source side.
@@ -1697,6 +1775,13 @@ class VMOps(object):
destination, includes block_migration flag
"""
+ if len(self._get_iscsi_srs(ctxt, instance_ref)) > 0:
+ # XAPI must support the relaxed SR check for live migrating with
+ # iSCSI VBDs
+ if not self._is_xsm_sr_check_relaxed():
+ raise exception.MigrationError(_('XAPI supporting '
+ 'relax-xsm-sr-check=true requried'))
+
if 'migrate_data' in dest_check_data:
vm_ref = self._get_vm_opaque_ref(instance_ref)
migrate_data = dest_check_data['migrate_data']
@@ -1709,9 +1794,10 @@ class VMOps(object):
raise exception.MigrationPreCheckError(reason=msg)
return dest_check_data
- def _generate_vdi_map(self, destination_sr_ref, vm_ref):
+ def _generate_vdi_map(self, destination_sr_ref, vm_ref, sr_ref=None):
"""generate a vdi_map for _call_live_migrate_command."""
- sr_ref = vm_utils.safe_find_sr(self._session)
+ if sr_ref is None:
+ sr_ref = vm_utils.safe_find_sr(self._session)
vm_vdis = vm_utils.get_instance_vdis_for_sr(self._session,
vm_ref, sr_ref)
return dict((vdi, destination_sr_ref) for vdi in vm_vdis)
@@ -1722,6 +1808,19 @@ class VMOps(object):
migrate_send_data = migrate_data['migrate_send_data']
vdi_map = self._generate_vdi_map(destination_sr_ref, vm_ref)
+
+ # Add destination SR refs for all of the VDIs that we created
+ # as part of the pre migration callback
+ if 'pre_live_migration_result' in migrate_data:
+ pre_migrate_data = migrate_data['pre_live_migration_result']
+ sr_uuid_map = pre_migrate_data.get('sr_uuid_map', [])
+ for sr_uuid in sr_uuid_map:
+ # Source and destination SRs have the same UUID, so get the
+ # reference for the local SR
+ sr_ref = self._session.call_xenapi("SR.get_by_uuid", sr_uuid)
+ vdi_map.update(
+ self._generate_vdi_map(
+ sr_uuid_map[sr_uuid], vm_ref, sr_ref))
vif_map = {}
options = {}
self._session.call_xenapi(command_name, vm_ref,
@@ -1737,12 +1836,18 @@ class VMOps(object):
if not migrate_data:
raise exception.InvalidParameterValue('Block Migration '
'requires migrate data from destination')
+
+ iscsi_srs = self._get_iscsi_srs(context, instance)
try:
self._call_live_migrate_command(
"VM.migrate_send", vm_ref, migrate_data)
except self._session.XenAPI.Failure as exc:
LOG.exception(exc)
raise exception.MigrationError(_('Migrate Send failed'))
+
+ # Tidy up the iSCSI SRs
+ for sr_ref in iscsi_srs:
+ volume_utils.forget_sr(self._session, sr_ref)
else:
host_ref = self._get_host_opaque_ref(context,
destination_hostname)
@@ -1775,3 +1880,26 @@ class VMOps(object):
usage[uuid] = {'memory_mb': memory_mb, 'uuid': uuid}
return usage
+
+ def attach_block_device_volumes(self, block_device_info):
+ sr_uuid_map = {}
+ try:
+ if block_device_info is not None:
+ for block_device_map in block_device_info[
+ 'block_device_mapping']:
+ sr_uuid, _ = self._volumeops.attach_volume(
+ block_device_map['connection_info'],
+ None,
+ block_device_map['mount_device'],
+ hotplug=False)
+
+ sr_ref = self._session.call_xenapi('SR.get_by_uuid',
+ sr_uuid)
+ sr_uuid_map[sr_uuid] = sr_ref
+ except Exception:
+ with excutils.save_and_reraise_exception():
+ # Disconnect the volumes we just connected
+ for sr in sr_uuid_map:
+ volume_utils.forget_sr(self._session, sr_uuid_map[sr_ref])
+
+ return sr_uuid_map
diff --git a/nova/virt/xenapi/volumeops.py b/nova/virt/xenapi/volumeops.py
index d59d96fe7..3560edbc1 100644
--- a/nova/virt/xenapi/volumeops.py
+++ b/nova/virt/xenapi/volumeops.py
@@ -39,29 +39,49 @@ class VolumeOps(object):
def attach_volume(self, connection_info, instance_name, mountpoint,
hotplug=True):
- """Attach volume storage to VM instance."""
-
- vm_ref = vm_utils.vm_ref_or_raise(self._session, instance_name)
+ """
+ Attach volume storage to VM instance.
+ """
# NOTE: No Resource Pool concept so far
LOG.debug(_("Attach_volume: %(connection_info)s, %(instance_name)s,"
" %(mountpoint)s") % locals())
- driver_type = connection_info['driver_volume_type']
- if driver_type not in ['iscsi', 'xensm']:
- raise exception.VolumeDriverNotFound(driver_type=driver_type)
-
- connection_data = connection_info['data']
dev_number = volume_utils.get_device_number(mountpoint)
+ vm_ref = vm_utils.vm_ref_or_raise(self._session, instance_name)
- self._connect_volume(connection_data, dev_number, instance_name,
- vm_ref, hotplug=hotplug)
+ sr_uuid, vdi_uuid = self._connect_volume(connection_info, dev_number,
+ instance_name, vm_ref,
+ hotplug=hotplug)
LOG.info(_('Mountpoint %(mountpoint)s attached to'
' instance %(instance_name)s') % locals())
- def _connect_volume(self, connection_data, dev_number, instance_name,
- vm_ref, hotplug=True):
+ return (sr_uuid, vdi_uuid)
+
+ def connect_volume(self, connection_info):
+ """
+ Attach volume storage to the hypervisor without attaching to a VM
+
+ Used to attach the just the SR - e.g. for during live migration
+ """
+
+ # NOTE: No Resource Pool concept so far
+ LOG.debug(_("Connect_volume: %(connection_info)s") % locals())
+
+ sr_uuid, vdi_uuid = self._connect_volume(connection_info,
+ None, None, None, False)
+
+ return (sr_uuid, vdi_uuid)
+
+ def _connect_volume(self, connection_info, dev_number=None,
+ instance_name=None, vm_ref=None, hotplug=True):
+ driver_type = connection_info['driver_volume_type']
+ if driver_type not in ['iscsi', 'xensm']:
+ raise exception.VolumeDriverNotFound(driver_type=driver_type)
+
+ connection_data = connection_info['data']
+
sr_uuid, sr_label, sr_params = volume_utils.parse_sr_info(
connection_data, 'Disk-for:%s' % instance_name)
@@ -86,12 +106,16 @@ class VolumeOps(object):
vdi_ref = volume_utils.introduce_vdi(self._session, sr_ref)
# Attach
- vbd_ref = vm_utils.create_vbd(self._session, vm_ref, vdi_ref,
- dev_number, bootable=False,
- osvol=True)
+ if vm_ref:
+ vbd_ref = vm_utils.create_vbd(self._session, vm_ref, vdi_ref,
+ dev_number, bootable=False,
+ osvol=True)
+
+ if hotplug:
+ self._session.call_xenapi("VBD.plug", vbd_ref)
- if hotplug:
- self._session.call_xenapi("VBD.plug", vbd_ref)
+ vdi_uuid = self._session.call_xenapi("VDI.get_uuid", vdi_ref)
+ return (sr_uuid, vdi_uuid)
except Exception:
with excutils.save_and_reraise_exception():
# NOTE(sirp): Forgetting the SR will have the effect of
@@ -106,7 +130,6 @@ class VolumeOps(object):
device_number = volume_utils.get_device_number(mountpoint)
vm_ref = vm_utils.vm_ref_or_raise(self._session, instance_name)
-
try:
vbd_ref = vm_utils.find_vbd_by_number(
self._session, vm_ref, device_number)
@@ -118,7 +141,7 @@ class VolumeOps(object):
return
# Unplug VBD if we're NOT shutdown
- unplug = not vm_utils._is_vm_shutdown(self._session, vm_ref)
+ unplug = not vm_utils.is_vm_shutdown(self._session, vm_ref)
self._detach_vbd(vbd_ref, unplug=unplug)
LOG.info(_('Mountpoint %(mountpoint)s detached from instance'
@@ -148,7 +171,7 @@ class VolumeOps(object):
# Generally speaking, detach_all will be called with VM already
# shutdown; however if it's still running, we can still perform the
# operation by unplugging the VBD first.
- unplug = not vm_utils._is_vm_shutdown(self._session, vm_ref)
+ unplug = not vm_utils.is_vm_shutdown(self._session, vm_ref)
vbd_refs = self._get_all_volume_vbd_refs(vm_ref)
for vbd_ref in vbd_refs:
diff --git a/openstack-common.conf b/openstack-common.conf
index 7a1d16f46..ad48a188a 100644
--- a/openstack-common.conf
+++ b/openstack-common.conf
@@ -25,7 +25,7 @@ module=policy
module=processutils
module=rootwrap
module=rpc
-module=setup
+module=strutils
module=timeutils
module=uuidutils
module=version
diff --git a/plugins/xenserver/xenapi/contrib/rpmbuild/SPECS/openstack-xen-plugins.spec b/plugins/xenserver/xenapi/contrib/rpmbuild/SPECS/openstack-xen-plugins.spec
index 66c13967e..b93c7b071 100644
--- a/plugins/xenserver/xenapi/contrib/rpmbuild/SPECS/openstack-xen-plugins.spec
+++ b/plugins/xenserver/xenapi/contrib/rpmbuild/SPECS/openstack-xen-plugins.spec
@@ -31,6 +31,7 @@ rm -rf $RPM_BUILD_ROOT
/etc/xapi.d/plugins/agent
/etc/xapi.d/plugins/bandwidth
/etc/xapi.d/plugins/bittorrent
+/etc/xapi.d/plugins/config_file
/etc/xapi.d/plugins/glance
/etc/xapi.d/plugins/kernel
/etc/xapi.d/plugins/migration
diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/config_file b/plugins/xenserver/xenapi/etc/xapi.d/plugins/config_file
new file mode 100755
index 000000000..417c477b4
--- /dev/null
+++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/config_file
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+import XenAPIPlugin
+
+
+def get_val(session, args):
+ config_key = args['key']
+ config_file = open('/etc/xapi.conf')
+ try:
+ for line in config_file:
+ split = line.split('=')
+ if (len(split) == 2) and (split[0].strip() == config_key):
+ return split[1].strip()
+ return ""
+ finally:
+ config_file.close()
+
+if __name__ == '__main__':
+ XenAPIPlugin.dispatch({"get_val": get_val})
diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py b/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py
index 411d52a2f..95f01bba3 100644
--- a/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py
+++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/utils.py
@@ -15,6 +15,7 @@
"""Various utilities used by XenServer plugins."""
import cPickle as pickle
+import errno
import logging
import os
import shlex
@@ -24,6 +25,7 @@ import tempfile
import XenAPIPlugin
+LOG = logging.getLogger(__name__)
CHUNK_SIZE = 8192
@@ -32,18 +34,18 @@ def delete_if_exists(path):
os.unlink(path)
except OSError, e:
if e.errno == errno.ENOENT:
- logging.warning("'%s' was already deleted, skipping delete" % path)
+ LOG.warning("'%s' was already deleted, skipping delete" % path)
else:
raise
def _link(src, dst):
- logging.info("Hard-linking file '%s' -> '%s'" % (src, dst))
+ LOG.info("Hard-linking file '%s' -> '%s'" % (src, dst))
os.link(src, dst)
def _rename(src, dst):
- logging.info("Renaming file '%s' -> '%s'" % (src, dst))
+ LOG.info("Renaming file '%s' -> '%s'" % (src, dst))
os.rename(src, dst)
@@ -54,14 +56,14 @@ def make_subprocess(cmdline, stdout=False, stderr=False, stdin=False,
# NOTE(dprince): shlex python 2.4 doesn't like unicode so we
# explicitly convert to ascii
cmdline = cmdline.encode('ascii')
- logging.info("Running cmd '%s'" % cmdline)
+ LOG.info("Running cmd '%s'" % cmdline)
kwargs = {}
kwargs['stdout'] = stdout and subprocess.PIPE or None
kwargs['stderr'] = stderr and subprocess.PIPE or None
kwargs['stdin'] = stdin and subprocess.PIPE or None
kwargs['universal_newlines'] = universal_newlines
args = shlex.split(cmdline)
- logging.info("Running args '%s'" % args)
+ LOG.info("Running args '%s'" % args)
proc = subprocess.Popen(args, **kwargs)
return proc
@@ -162,7 +164,7 @@ def _assert_vhd_not_hidden(path):
out, err = finish_subprocess(query_proc, query_cmd)
for line in out.splitlines():
- if line.startswith('hidden'):
+ if line.lower().startswith('hidden'):
value = line.split(':')[1].strip()
if value == "1":
raise Exception(
@@ -170,8 +172,13 @@ def _assert_vhd_not_hidden(path):
locals())
-def _validate_footer_timestamp(vdi_path):
+def _validate_vhd(vdi_path):
"""
+ This checks for several errors in the VHD structure.
+
+ Most notably, it checks that the timestamp in the footer is correct, but
+ may pick up other errors also.
+
This check ensures that the timestamps listed in the VHD footer aren't in
the future. This can occur during a migration if the clocks on the the two
Dom0's are out-of-sync. This would corrupt the SR if it were imported, so
@@ -183,13 +190,30 @@ def _validate_footer_timestamp(vdi_path):
check_proc, check_cmd, ok_exit_codes=[0, 22])
first_line = out.splitlines()[0].strip()
- if 'primary footer invalid' in first_line:
- raise Exception("VDI '%(vdi_path)s' has timestamp in the future,"
- " ensure source and destination host machines have"
- " time set correctly" % locals())
- elif check_proc.returncode != 0:
- raise Exception("Unexpected output '%(out)s' from vhd-util" %
- locals())
+ if 'invalid' in first_line:
+ if 'footer' in first_line:
+ part = 'footer'
+ elif 'header' in first_line:
+ part = 'header'
+ else:
+ part = 'setting'
+
+ details = first_line.split(':', 1)
+ if len(details) == 2:
+ details = details[1]
+ else:
+ details = first_line
+
+ extra = ''
+ if 'timestamp' in first_line:
+ extra = (" ensure source and destination host machines have "
+ "time set correctly")
+
+ LOG.info("VDI Error details: %s" % out)
+
+ raise Exception(
+ "VDI '%(vdi_path)s' has an invalid %(part)s: '%(details)s'"
+ "%(extra)s" % locals())
def _validate_vdi_chain(vdi_path):
@@ -219,7 +243,7 @@ def _validate_vdi_chain(vdi_path):
cur_path = vdi_path
while cur_path:
- _validate_footer_timestamp(cur_path)
+ _validate_vhd(cur_path)
cur_path = get_parent_path(cur_path)
diff --git a/run_tests.sh b/run_tests.sh
index 4d02fe570..258483ea2 100755
--- a/run_tests.sh
+++ b/run_tests.sh
@@ -136,8 +136,19 @@ function run_tests {
set +e
testrargs=`echo "$testrargs" | sed -e's/^\s*\(.*\)\s*$/\1/'`
TESTRTESTS="$TESTRTESTS --testr-args='--subunit $testropts $testrargs'"
+ if [ setup.cfg -nt nova.egg-info/entry_points.txt ]
+ then
+ ${wrapper} python setup.py egg_info
+ fi
echo "Running \`${wrapper} $TESTRTESTS\`"
- bash -c "${wrapper} $TESTRTESTS | ${wrapper} tools/colorizer.py"
+ if ${wrapper} which subunit-2to1 2>&1 > /dev/null
+ then
+ # subunit-2to1 is present, testr subunit stream should be in version 2
+ # format. Convert to version one before colorizing.
+ bash -c "${wrapper} $TESTRTESTS | ${wrapper} subunit-2to1 | ${wrapper} tools/colorizer.py"
+ else
+ bash -c "${wrapper} $TESTRTESTS | ${wrapper} tools/colorizer.py"
+ fi
RESULT=$?
set -e
diff --git a/setup.cfg b/setup.cfg
index a4932f63b..54127dcfb 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,3 +1,61 @@
+[metadata]
+name = nova
+version = 2013.2
+summary = Cloud computing fabric controller
+description-file =
+ README.rst
+author = OpenStack
+author-email = openstack-dev@lists.openstack.org
+home-page = http://www.openstack.org/
+classifier =
+ Environment :: OpenStack
+ Intended Audience :: Information Technology
+ Intended Audience :: System Administrators
+ License :: OSI Approved :: Apache Software License
+ Operating System :: POSIX :: Linux
+ Programming Language :: Python
+ Programming Language :: Python :: 2
+ Programming Language :: Python :: 2.7
+ Programming Language :: Python :: 2.6
+
+[global]
+setup-hooks =
+ pbr.hooks.setup_hook
+
+[files]
+packages =
+ nova
+
+[entry_points]
+console_scripts =
+ nova-all = nova.cmd.all:main
+ nova-api = nova.cmd.api:main
+ nova-api-ec2 = nova.cmd.api_ec2:main
+ nova-api-metadata = nova.cmd.api_metadata:main
+ nova-api-os-compute = nova.cmd.api_os_compute:main
+ nova-baremetal-deploy-helper = nova.cmd.baremetal_deploy_helper:main
+ nova-baremetal-manage = nova.cmd.baremetal_manage:main
+ nova-rpc-zmq-receiver = nova.cmd.rpc_zmq_receiver:main
+ nova-cells = nova.cmd.cells:main
+ nova-cert = nova.cmd.cert:main
+ nova-clear-rabbit-queues = nova.cmd.clear_rabbit_queues:main
+ nova-compute = nova.cmd.compute:main
+ nova-conductor = nova.cmd.conductor:main
+ nova-console = nova.cmd.console:main
+ nova-consoleauth = nova.cmd.consoleauth:main
+ nova-dhcpbridge = nova.cmd.dhcpbridge:main
+ nova-manage = nova.cmd.manage:main
+ nova-network = nova.cmd.network:main
+ nova-novncproxy = nova.cmd.novncproxy:main
+ nova-objectstore = nova.cmd.objectstore:main
+ nova-rootwrap = nova.openstack.common.rootwrap.cmd:main
+ nova-scheduler = nova.cmd.scheduler:main
+ nova-spicehtml5proxy = nova.cmd.spicehtml5proxy:main
+ nova-xvpvncproxy = nova.cmd.xvpvncproxy:main
+
+nova.api.v3.extensions =
+ fixed_ips = nova.api.openstack.compute.plugins.v3.fixed_ips:FixedIPs
+
[build_sphinx]
all_files = 1
build-dir = doc/build
diff --git a/setup.py b/setup.py
index 403e32c72..59a00909e 100644
--- a/setup.py
+++ b/setup.py
@@ -1,80 +1,21 @@
-# vim: tabstop=4 shiftwidth=4 softtabstop=4
-
-# Copyright 2010 United States Government as represented by the
-# Administrator of the National Aeronautics and Space Administration.
-# All Rights Reserved.
+#!/usr/bin/env python
+# Copyright (c) 2013 Hewlett-Packard Development Company, L.P.
#
-# Licensed under the Apache License, Version 2.0 (the "License"); you may
-# not use this file except in compliance with the License. You may obtain
-# a copy of the License at
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
#
-# http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-# License for the specific language governing permissions and limitations
-# under the License.
-import setuptools
-
-from nova.openstack.common import setup as common_setup
-
-requires = common_setup.parse_requirements()
-depend_links = common_setup.parse_dependency_links()
-project = 'nova'
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+# implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+import setuptools
setuptools.setup(
- name=project,
- version=common_setup.get_version(project, '2013.2'),
- description='cloud computing fabric controller',
- author='OpenStack',
- author_email='nova@lists.launchpad.net',
- url='http://www.openstack.org/',
- classifiers=[
- 'Environment :: OpenStack',
- 'Intended Audience :: Information Technology',
- 'Intended Audience :: System Administrators',
- 'License :: OSI Approved :: Apache Software License',
- 'Operating System :: POSIX :: Linux',
- 'Programming Language :: Python',
- 'Programming Language :: Python :: 2',
- 'Programming Language :: Python :: 2.7',
- ],
- cmdclass=common_setup.get_cmdclass(),
- packages=setuptools.find_packages(exclude=['bin', 'smoketests']),
- install_requires=requires,
- dependency_links=depend_links,
- include_package_data=True,
- test_suite='nose.collector',
- setup_requires=['setuptools_git>=0.4'],
- entry_points={
- 'console_scripts': [
- 'nova-all = nova.cmd.all:main',
- 'nova-api = nova.cmd.api:main',
- 'nova-api-ec2 = nova.cmd.api_ec2:main',
- 'nova-api-metadata = nova.cmd.api_metadata:main',
- 'nova-api-os-compute = nova.cmd.api_os_compute:main',
- 'nova-baremetal-deploy-helper'
- ' = nova.cmd.baremetal_deploy_helper:main',
- 'nova-baremetal-manage = nova.cmd.baremetal_manage:main',
- 'nova-rpc-zmq-receiver = nova.cmd.rpc_zmq_receiver:main',
- 'nova-cells = nova.cmd.cells:main',
- 'nova-cert = nova.cmd.cert:main',
- 'nova-clear-rabbit-queues = nova.cmd.clear_rabbit_queues:main',
- 'nova-compute = nova.cmd.compute:main',
- 'nova-conductor = nova.cmd.conductor:main',
- 'nova-console = nova.cmd.console:main',
- 'nova-consoleauth = nova.cmd.consoleauth:main',
- 'nova-dhcpbridge = nova.cmd.dhcpbridge:main',
- 'nova-manage = nova.cmd.manage:main',
- 'nova-network = nova.cmd.network:main',
- 'nova-novncproxy = nova.cmd.novncproxy:main',
- 'nova-objectstore = nova.cmd.objectstore:main',
- 'nova-rootwrap = nova.cmd.rootwrap:main',
- 'nova-scheduler = nova.cmd.scheduler:main',
- 'nova-spicehtml5proxy = nova.cmd.spicehtml5proxy:main',
- 'nova-xvpvncproxy = nova.cmd.xvpvncproxy:main'
- ]
- },
- py_modules=[])
+ setup_requires=['d2to1', 'pbr'],
+ d2to1=True)
diff --git a/smoketests/requirements.txt b/smoketests/requirements.txt
new file mode 100644
index 000000000..b942b507c
--- /dev/null
+++ b/smoketests/requirements.txt
@@ -0,0 +1 @@
+python-gflags
diff --git a/tools/pip-requires b/tools/pip-requires
index 05a103ee9..2b313584b 100644
--- a/tools/pip-requires
+++ b/tools/pip-requires
@@ -1,3 +1,5 @@
+d2to1>=0.2.10,<0.3
+pbr>=0.5,<0.6
SQLAlchemy>=0.7.8,<0.7.99
Cheetah>=2.4.4
amqplib>=0.6.1
@@ -20,7 +22,6 @@ pyasn1
Babel>=0.9.6
iso8601>=0.1.4
httplib2
-setuptools_git>=0.4
python-cinderclient>=1.0.1
python-quantumclient>=2.2.0,<3.0.0
python-glanceclient>=0.5.0,<2
diff --git a/tools/test-requires b/tools/test-requires
index 1318ecd9a..cb5d54bb3 100644
--- a/tools/test-requires
+++ b/tools/test-requires
@@ -12,6 +12,7 @@ pep8==1.3.3
pyflakes
pylint==0.25.2
python-subunit
+setuptools_git>=0.4
sphinx>=1.1.2
testrepository>=0.0.13
testtools>=0.9.27