diff options
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 @@ -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 @@ -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 |