diff options
-rw-r--r-- | doc/source/devref/filter_scheduler.rst | 37 | ||||
-rw-r--r-- | nova/api/openstack/compute/contrib/admin_actions.py | 16 | ||||
-rw-r--r-- | nova/compute/manager.py | 4 | ||||
-rw-r--r-- | nova/locale/nova.pot | 2032 | ||||
-rw-r--r-- | nova/manager.py | 2 | ||||
-rw-r--r-- | nova/notifications.py | 1 | ||||
-rw-r--r-- | nova/scheduler/filters/compute_capabilities_filter.py | 17 | ||||
-rw-r--r-- | nova/service.py | 4 | ||||
-rw-r--r-- | nova/tests/api/openstack/compute/contrib/test_admin_actions.py | 37 | ||||
-rw-r--r-- | nova/tests/scheduler/test_host_filters.py | 21 | ||||
-rw-r--r-- | nova/tests/test_libvirt.py | 24 | ||||
-rw-r--r-- | nova/tests/test_notifications.py | 5 | ||||
-rw-r--r-- | nova/tests/test_service.py | 2 | ||||
-rw-r--r-- | nova/virt/disk/vfs/__init__.py | 19 | ||||
-rw-r--r-- | nova/virt/disk/vfs/api.py | 107 |
15 files changed, 1119 insertions, 1209 deletions
diff --git a/doc/source/devref/filter_scheduler.rst b/doc/source/devref/filter_scheduler.rst index 62909a6e1..abb0b7c9e 100644 --- a/doc/source/devref/filter_scheduler.rst +++ b/doc/source/devref/filter_scheduler.rst @@ -32,10 +32,16 @@ There are some standard filter classes to use (:mod:`nova.scheduler.filters`): image properties contained in the instance. * |AvailabilityZoneFilter| - filters hosts by availability zone. It passes hosts matching the availability zone specified in the instance properties. -* |ComputeCapabilityFilter| - checks that the capabilities provided by the +* |ComputeCapabilitiesFilter| - checks that the capabilities provided by the host compute service satisfy any extra specifications associated with the - instance type (that have no scope, see |TrustedFilter| for details). It - passes hosts that can create the specified instance type. + instance type. It passes hosts that can create the specified instance type. + + The extra specifications can have a scope at the beginning of the key string + of a key/value pair. The scope format is "scope:key" and can be nested, + i.e. key_string := scope:key_string. Example like "capabilities:cpu_info: + features" is valid scope format. A key string without any ':' is non-scope + format. Each filter defines it's valid scope, and not all filters accept + non-scope format. The extra specifications can have an operator at the beginning of the value string of a key/value pair. If there is no operator specified, then a @@ -63,7 +69,7 @@ There are some standard filter classes to use (:mod:`nova.scheduler.filters`): satisfies any extra specifications associated with the instance type (that have no scope). It passes hosts that can create the specified instance type. The extra specifications can have the same operators as - |ComputeCapabilityFilter|. + |ComputeCapabilitiesFilter|. * |ComputeFilter| - passes all hosts that are operational and enabled. * |CoreFilter| - filters based on CPU core utilization. It passes hosts with sufficient number of CPU cores. @@ -128,11 +134,14 @@ hypervisor_type=qemu` Only hosts that satisfy these requirements will pass the |ImagePropertiesFilter|. -|ComputeCapabilitesFilter| checks if the host satisfies any 'extra specs' -specified on the instance type. The 'extra specs' can contain key/value pairs, -and the |ComputeCapabilitiesFilter| will only pass hosts whose capabilities -satisfy the requested specifications. All hosts are passed if no 'extra specs' -are specified. +|ComputeCapabilitiesFilter| checks if the host satisfies any 'extra specs' +specified on the instance type. The 'extra specs' can contain key/value pairs. +The key for the filter is either non-scope format (i.e. no ':' contained), or +scope format in capabilities scope (i.e. 'capabilities:xxx:yyy'). One example +of capabilities scope is "capabilities:cpu_info:features", which will match +host's cpu features capabilities. The |ComputeCapabilitiesFilter| will only +pass hosts whose capabilities satisfy the requested specifications. All hosts +are passed if no 'extra specs' are specified. |ComputeFilter| is quite simple and passes any host whose compute service is enabled and operational. @@ -179,9 +188,9 @@ The |RetryFilter| filters hosts that have already been attempted for scheduling. It only passes hosts that have not been previously attempted. The |TrustedFilter| filters hosts based on their trust. Only passes hosts -that match the trust requested in the `extra_specs' for the flavor. The key -for this filter is `trust:trusted_host', where `trust' is the scope of the -key and `trusted_host' is the actual key value'. +that match the trust requested in the `extra_specs' for the flavor. The key +for this filter must be scope format as `trust:trusted_host', where `trust' +is the scope of the key and `trusted_host' is the actual key value. The value of this pair (`trusted'/`untrusted') must match the integrity of a host (obtained from the Attestation service) before it is passed by the |TrustedFilter|. @@ -198,11 +207,11 @@ The default values for these settings in nova.conf are: :: --scheduler_available_filters=nova.scheduler.filters.standard_filters - --scheduler_default_filters=RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilityFilter,ImagePropertiesFilter + --scheduler_default_filters=RamFilter,ComputeFilter,AvailabilityZoneFilter,ComputeCapabilitiesFilter,ImagePropertiesFilter With this configuration, all filters in `nova.scheduler.filters` would be available, and by default the |RamFilter|, |ComputeFilter|, -|AvailabilityZoneFilter|, |ComputeCapabilityFilter|, and +|AvailabilityZoneFilter|, |ComputeCapabilitiesFilter|, and |ImagePropertiesFilter| would be used. If you want to create **your own filter** you just need to inherit from diff --git a/nova/api/openstack/compute/contrib/admin_actions.py b/nova/api/openstack/compute/contrib/admin_actions.py index d651ed20a..799b0914a 100644 --- a/nova/api/openstack/compute/contrib/admin_actions.py +++ b/nova/api/openstack/compute/contrib/admin_actions.py @@ -228,6 +228,10 @@ class AdminActionsController(wsgi.Controller): except ValueError: msg = _("createBackup attribute 'rotation' must be an integer") raise exc.HTTPBadRequest(explanation=msg) + if rotation < 0: + msg = _("createBackup attribute 'rotation' must be greater " + "than or equal to zero") + raise exc.HTTPBadRequest(explanation=msg) props = {} metadata = entity.get('metadata', {}) @@ -250,12 +254,14 @@ class AdminActionsController(wsgi.Controller): common.raise_http_conflict_for_instance_invalid_state(state_error, 'createBackup') - # build location of newly-created image entity - image_id = str(image['id']) - image_ref = os.path.join(req.application_url, 'images', image_id) - resp = webob.Response(status_int=202) - resp.headers['Location'] = image_ref + + # build location of newly-created image entity if rotation is not zero + if rotation > 0: + image_id = str(image['id']) + image_ref = os.path.join(req.application_url, 'images', image_id) + resp.headers['Location'] = image_ref + return resp @wsgi.action('os-migrateLive') diff --git a/nova/compute/manager.py b/nova/compute/manager.py index a0bf61697..b0c57ed0d 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -407,7 +407,7 @@ class ComputeManager(manager.SchedulerDependentManager): self._report_driver_status(context) self.publish_service_capabilities(context) - def pre_start_hook(self): + def pre_start_hook(self, **kwargs): """After the service is initialized, but before we fully bring the service up by listening on RPC queues, make sure to update our available resources. @@ -1350,7 +1350,7 @@ class ComputeManager(manager.SchedulerDependentManager): if image_type == 'snapshot' and rotation: raise exception.ImageRotationNotAllowed() - elif image_type == 'backup' and rotation: + elif image_type == 'backup' and rotation >= 0: self._rotate_backups(context, instance, backup_type, rotation) elif image_type == 'backup': diff --git a/nova/locale/nova.pot b/nova/locale/nova.pot index e3f900ecf..da69ef1f6 100644 --- a/nova/locale/nova.pot +++ b/nova/locale/nova.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: nova 2013.1\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2012-11-18 00:02+0000\n" +"POT-Creation-Date: 2012-11-20 00:03+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" @@ -27,41 +27,41 @@ msgstr "" msgid "read_deleted can only be one of 'no', 'yes' or 'only', not %r" msgstr "" -#: nova/crypto.py:48 +#: nova/crypto.py:47 msgid "Filename of root CA" msgstr "" -#: nova/crypto.py:51 +#: nova/crypto.py:50 msgid "Filename of private key" msgstr "" -#: nova/crypto.py:54 +#: nova/crypto.py:53 msgid "Filename of root Certificate Revocation List" msgstr "" -#: nova/crypto.py:57 +#: nova/crypto.py:56 msgid "Where we keep our keys" msgstr "" -#: nova/crypto.py:60 +#: nova/crypto.py:59 msgid "Where we keep our root CA" msgstr "" -#: nova/crypto.py:63 +#: nova/crypto.py:62 msgid "Should we use a CA for each project?" msgstr "" -#: nova/crypto.py:67 +#: nova/crypto.py:66 #, python-format msgid "Subject for certificate for users, %s for project, user, timestamp" msgstr "" -#: nova/crypto.py:72 +#: nova/crypto.py:71 #, python-format msgid "Subject for certificate for projects, %s for project, timestamp" msgstr "" -#: nova/crypto.py:302 +#: nova/crypto.py:301 #, python-format msgid "Flags path: %s" msgstr "" @@ -145,7 +145,7 @@ msgstr "" msgid "Volume %(volume_id)s is not attached to anything" msgstr "" -#: nova/exception.py:225 nova/api/ec2/cloud.py:390 nova/api/ec2/cloud.py:415 +#: nova/exception.py:225 nova/api/ec2/cloud.py:389 nova/api/ec2/cloud.py:414 #: nova/api/openstack/compute/contrib/keypairs.py:98 nova/compute/api.py:2250 msgid "Keypair data is invalid" msgstr "" @@ -162,7 +162,7 @@ msgstr "" msgid "Invalid volume" msgstr "" -#: nova/exception.py:241 nova/api/openstack/compute/servers.py:1285 +#: nova/exception.py:241 nova/api/openstack/compute/servers.py:1284 #: nova/api/openstack/compute/contrib/admin_actions.py:239 msgid "Invalid metadata" msgstr "" @@ -176,7 +176,7 @@ msgstr "" msgid "Invalid port range %(from_port)s:%(to_port)s. %(msg)s" msgstr "" -#: nova/exception.py:253 nova/api/ec2/cloud.py:572 +#: nova/exception.py:253 nova/api/ec2/cloud.py:571 #, python-format msgid "Invalid IP protocol %(protocol)s." msgstr "" @@ -1082,261 +1082,261 @@ msgstr "" msgid "The CRL file for %(project)s could not be found" msgstr "" -#: nova/manager.py:165 +#: nova/manager.py:164 #, python-format msgid "Skipping %(full_task_name)s, %(ticks_to_skip)s ticks left until next run" msgstr "" -#: nova/manager.py:171 +#: nova/manager.py:170 #, python-format msgid "Running periodic task %(full_task_name)s" msgstr "" -#: nova/manager.py:181 +#: nova/manager.py:180 #, python-format msgid "Error during %(full_task_name)s: %(e)s" msgstr "" -#: nova/manager.py:256 +#: nova/manager.py:255 msgid "Notifying Schedulers of capabilities ..." msgstr "" -#: nova/notifications.py:113 nova/notifications.py:153 +#: nova/notifications.py:112 nova/notifications.py:152 msgid "Failed to send state update notification" msgstr "" -#: nova/policy.py:33 +#: nova/policy.py:32 msgid "JSON file representing policy" msgstr "" -#: nova/policy.py:36 +#: nova/policy.py:35 msgid "Rule checked when requested rule is not found" msgstr "" -#: nova/quota.py:721 +#: nova/quota.py:720 #, python-format msgid "Created reservations %(reservations)s" msgstr "" -#: nova/quota.py:740 +#: nova/quota.py:739 #, python-format msgid "Failed to commit reservations %(reservations)s" msgstr "" -#: nova/quota.py:758 +#: nova/quota.py:757 #, python-format msgid "Failed to roll back reservations %(reservations)s" msgstr "" -#: nova/service.py:173 +#: nova/service.py:172 msgid "Full set of CONF:" msgstr "" -#: nova/service.py:180 +#: nova/service.py:179 #, python-format msgid "%(flag)s : FLAG SET " msgstr "" -#: nova/service.py:190 nova/service.py:288 +#: nova/service.py:189 nova/service.py:287 #, python-format msgid "Caught %s, exiting" msgstr "" -#: nova/service.py:234 +#: nova/service.py:233 msgid "Parent process has died unexpectedly, exiting" msgstr "" -#: nova/service.py:270 +#: nova/service.py:269 msgid "Forking too fast, sleeping" msgstr "" -#: nova/service.py:293 +#: nova/service.py:292 msgid "Unhandled exception" msgstr "" -#: nova/service.py:300 +#: nova/service.py:299 #, python-format msgid "Started child %d" msgstr "" -#: nova/service.py:310 +#: nova/service.py:309 #, python-format msgid "Starting %d workers" msgstr "" -#: nova/service.py:324 +#: nova/service.py:323 #, python-format msgid "Child %(pid)d killed by signal %(sig)d" msgstr "" -#: nova/service.py:327 +#: nova/service.py:326 #, python-format msgid "Child %(pid)d exited with status %(code)d" msgstr "" -#: nova/service.py:330 +#: nova/service.py:329 #, python-format msgid "pid %d not in child list" msgstr "" -#: nova/service.py:350 +#: nova/service.py:349 #, python-format msgid "Caught %s, stopping children" msgstr "" -#: nova/service.py:361 +#: nova/service.py:360 #, python-format msgid "Waiting on %d children to exit" msgstr "" -#: nova/service.py:391 +#: nova/service.py:390 #, python-format msgid "Starting %(topic)s node (version %(vcs_string)s)" msgstr "" -#: nova/service.py:410 nova/openstack/common/rpc/service.py:47 +#: nova/service.py:409 nova/openstack/common/rpc/service.py:47 #, python-format msgid "Creating Consumer connection for Service %s" msgstr "" -#: nova/service.py:502 +#: nova/service.py:501 msgid "Service killed that has no database entry" msgstr "" -#: nova/service.py:539 +#: nova/service.py:538 msgid "The service database object disappeared, Recreating it." msgstr "" -#: nova/service.py:554 +#: nova/service.py:553 msgid "Recovered model server connection!" msgstr "" -#: nova/service.py:560 +#: nova/service.py:559 msgid "model server went away" msgstr "" -#: nova/service.py:654 +#: nova/service.py:653 msgid "serve() can only be called once" msgstr "" -#: nova/utils.py:169 +#: nova/utils.py:168 #, python-format msgid "Got unknown keyword args to utils.execute: %r" msgstr "" -#: nova/utils.py:180 +#: nova/utils.py:179 #, python-format msgid "Running cmd (subprocess): %s" msgstr "" -#: nova/utils.py:204 nova/utils.py:282 nova/virt/powervm/common.py:82 +#: nova/utils.py:203 nova/utils.py:281 nova/virt/powervm/common.py:82 #, python-format msgid "Result was %s" msgstr "" -#: nova/utils.py:217 +#: nova/utils.py:216 #, python-format msgid "%r failed. Retrying." msgstr "" -#: nova/utils.py:257 +#: nova/utils.py:256 #, python-format msgid "Running cmd (SSH): %s" msgstr "" -#: nova/utils.py:259 +#: nova/utils.py:258 msgid "Environment not supported over SSH" msgstr "" -#: nova/utils.py:263 +#: nova/utils.py:262 msgid "process_input not supported over SSH" msgstr "" -#: nova/utils.py:298 +#: nova/utils.py:297 #, python-format msgid "debug in callback: %s" msgstr "" -#: nova/utils.py:457 +#: nova/utils.py:456 #, python-format msgid "Link Local address is not found.:%s" msgstr "" -#: nova/utils.py:460 +#: nova/utils.py:459 #, python-format msgid "Couldn't get Link Local IP of %(interface)s :%(ex)s" msgstr "" -#: nova/utils.py:495 +#: nova/utils.py:494 #, python-format msgid "Invalid backend: %s" msgstr "" -#: nova/utils.py:556 +#: nova/utils.py:555 msgid "in looping call" msgstr "" -#: nova/utils.py:616 +#: nova/utils.py:615 #, python-format msgid "Unknown byte multiplier: %s" msgstr "" -#: nova/utils.py:745 +#: nova/utils.py:744 #, python-format msgid "Expected object of type: %s" msgstr "" -#: nova/utils.py:774 +#: nova/utils.py:773 #, python-format msgid "Invalid server_string: %s" msgstr "" -#: nova/utils.py:898 +#: nova/utils.py:897 #, python-format msgid "timefunc: '%(name)s' took %(total_time).2f secs" msgstr "" -#: nova/utils.py:976 +#: nova/utils.py:975 #, python-format msgid "Reloading cached file %s" msgstr "" -#: nova/utils.py:1094 nova/virt/configdrive.py:156 +#: nova/utils.py:1093 nova/virt/configdrive.py:155 #, python-format msgid "Could not remove tmpdir: %s" msgstr "" -#: nova/wsgi.py:86 +#: nova/wsgi.py:85 #, python-format msgid "%(name)s listening on %(host)s:%(port)s" msgstr "" -#: nova/wsgi.py:110 +#: nova/wsgi.py:109 msgid "Stopping WSGI server." msgstr "" -#: nova/wsgi.py:128 +#: nova/wsgi.py:127 msgid "WSGI server has stopped." msgstr "" -#: nova/wsgi.py:197 +#: nova/wsgi.py:196 msgid "You must implement __call__" msgstr "" -#: nova/wsgi.py:383 +#: nova/wsgi.py:382 #, python-format msgid "Loading app %(name)s from %(path)s" msgstr "" -#: nova/api/auth.py:109 +#: nova/api/auth.py:108 msgid "Invalid service catalog json." msgstr "" -#: nova/api/auth.py:132 +#: nova/api/auth.py:131 msgid "Sourcing roles from deprecated X-Role HTTP header" msgstr "" -#: nova/api/sizelimit.py:52 +#: nova/api/sizelimit.py:51 msgid "Request is too large." msgstr "" @@ -1345,129 +1345,129 @@ msgstr "" msgid "%(key)s with value %(value)s failed validator %(name)s" msgstr "" -#: nova/api/ec2/__init__.py:82 +#: nova/api/ec2/__init__.py:81 #, python-format msgid "%(code)s: %(message)s" msgstr "" -#: nova/api/ec2/__init__.py:105 +#: nova/api/ec2/__init__.py:104 #, python-format msgid "FaultWrapper: %s" msgstr "" -#: nova/api/ec2/__init__.py:180 +#: nova/api/ec2/__init__.py:179 msgid "Too many failed authentications." msgstr "" -#: nova/api/ec2/__init__.py:190 +#: nova/api/ec2/__init__.py:189 #, 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:207 +#: nova/api/ec2/__init__.py:206 msgid "Signature not provided" msgstr "" -#: nova/api/ec2/__init__.py:211 +#: nova/api/ec2/__init__.py:210 msgid "Access key not provided" msgstr "" -#: nova/api/ec2/__init__.py:246 nova/api/ec2/__init__.py:261 +#: nova/api/ec2/__init__.py:245 nova/api/ec2/__init__.py:260 msgid "Failure communicating with keystone" msgstr "" -#: nova/api/ec2/__init__.py:320 +#: nova/api/ec2/__init__.py:319 msgid "Timestamp failed validation." msgstr "" -#: nova/api/ec2/__init__.py:340 +#: nova/api/ec2/__init__.py:339 #, python-format msgid "action: %s" msgstr "" -#: nova/api/ec2/__init__.py:342 +#: nova/api/ec2/__init__.py:341 #, python-format msgid "arg: %(key)s\t\tval: %(value)s" msgstr "" -#: nova/api/ec2/__init__.py:417 +#: nova/api/ec2/__init__.py:416 #, python-format msgid "Unauthorized request for controller=%(controller)s and action=%(action)s" msgstr "" -#: nova/api/ec2/__init__.py:489 +#: nova/api/ec2/__init__.py:488 #, python-format msgid "InstanceNotFound raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:495 +#: nova/api/ec2/__init__.py:494 #, python-format msgid "VolumeNotFound raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:501 +#: nova/api/ec2/__init__.py:500 #, python-format msgid "SnapshotNotFound raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:507 +#: nova/api/ec2/__init__.py:506 #, python-format msgid "NotFound raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:510 +#: nova/api/ec2/__init__.py:509 #, python-format msgid "EC2APIError raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:518 +#: nova/api/ec2/__init__.py:517 #, python-format msgid "KeyPairExists raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:522 +#: nova/api/ec2/__init__.py:521 #, python-format msgid "InvalidParameterValue raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:526 +#: nova/api/ec2/__init__.py:525 #, python-format msgid "InvalidPortRange raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:530 +#: nova/api/ec2/__init__.py:529 #, python-format msgid "NotAuthorized raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:534 +#: nova/api/ec2/__init__.py:533 #, python-format msgid "InvalidRequest raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:538 +#: nova/api/ec2/__init__.py:537 #, python-format msgid "QuotaError raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:542 +#: nova/api/ec2/__init__.py:541 #, python-format msgid "Invalid id: bogus (expecting \"i-...\"): %s" msgstr "" -#: nova/api/ec2/__init__.py:551 +#: nova/api/ec2/__init__.py:550 #, python-format msgid "Unexpected error raised: %s" msgstr "" -#: nova/api/ec2/__init__.py:552 +#: nova/api/ec2/__init__.py:551 #, python-format msgid "Environment: %s" msgstr "" -#: nova/api/ec2/__init__.py:554 nova/api/metadata/handler.py:81 +#: nova/api/ec2/__init__.py:553 nova/api/metadata/handler.py:80 msgid "An unknown error has occurred. Please try your request again." msgstr "" @@ -1476,241 +1476,241 @@ msgstr "" msgid "Unsupported API request: controller = %(controller)s, action = %(action)s" msgstr "" -#: nova/api/ec2/cloud.py:338 +#: nova/api/ec2/cloud.py:337 #, python-format msgid "Create snapshot of volume %s" msgstr "" -#: nova/api/ec2/cloud.py:364 +#: nova/api/ec2/cloud.py:363 #, python-format msgid "Could not find key pair(s): %s" msgstr "" -#: nova/api/ec2/cloud.py:380 +#: nova/api/ec2/cloud.py:379 #, python-format msgid "Create key pair %s" msgstr "" -#: nova/api/ec2/cloud.py:387 nova/api/ec2/cloud.py:412 +#: nova/api/ec2/cloud.py:386 nova/api/ec2/cloud.py:411 #: nova/api/openstack/compute/contrib/keypairs.py:93 msgid "Quota exceeded, too many key pairs." msgstr "" -#: nova/api/ec2/cloud.py:393 nova/api/ec2/cloud.py:418 +#: nova/api/ec2/cloud.py:392 nova/api/ec2/cloud.py:417 #: nova/api/openstack/compute/contrib/keypairs.py:101 #, python-format msgid "Key pair '%s' already exists." msgstr "" -#: nova/api/ec2/cloud.py:402 +#: nova/api/ec2/cloud.py:401 #, python-format msgid "Import key %s" msgstr "" -#: nova/api/ec2/cloud.py:425 +#: nova/api/ec2/cloud.py:424 #, python-format msgid "Delete key pair %s" msgstr "" -#: nova/api/ec2/cloud.py:559 nova/api/ec2/cloud.py:680 +#: nova/api/ec2/cloud.py:558 nova/api/ec2/cloud.py:679 msgid "Not enough parameters, need group_name or group_id" msgstr "" -#: nova/api/ec2/cloud.py:564 +#: nova/api/ec2/cloud.py:563 #, python-format msgid "%s Not enough parameters to build a valid rule" msgstr "" -#: nova/api/ec2/cloud.py:602 nova/api/ec2/cloud.py:634 +#: nova/api/ec2/cloud.py:601 nova/api/ec2/cloud.py:633 msgid "No rule for the specified parameters." msgstr "" -#: nova/api/ec2/cloud.py:625 +#: nova/api/ec2/cloud.py:624 #, python-format msgid "%s - This rule already exists in group" msgstr "" -#: nova/api/ec2/cloud.py:691 +#: nova/api/ec2/cloud.py:690 #, python-format msgid "Get console output for instance %s" msgstr "" -#: nova/api/ec2/cloud.py:767 +#: nova/api/ec2/cloud.py:766 #, python-format msgid "Create volume from snapshot %s" msgstr "" -#: nova/api/ec2/cloud.py:771 nova/api/openstack/compute/contrib/volumes.py:241 +#: nova/api/ec2/cloud.py:770 nova/api/openstack/compute/contrib/volumes.py:241 #, python-format msgid "Create volume of %s GB" msgstr "" -#: nova/api/ec2/cloud.py:799 +#: nova/api/ec2/cloud.py:798 msgid "Delete Failed" msgstr "" -#: nova/api/ec2/cloud.py:812 +#: nova/api/ec2/cloud.py:811 #, python-format msgid "Attach volume %(volume_id)s to instance %(instance_id)s at %(device)s" msgstr "" -#: nova/api/ec2/cloud.py:820 +#: nova/api/ec2/cloud.py:819 msgid "Attach Failed." msgstr "" -#: nova/api/ec2/cloud.py:833 nova/api/openstack/compute/contrib/volumes.py:420 +#: nova/api/ec2/cloud.py:832 nova/api/openstack/compute/contrib/volumes.py:420 #, python-format msgid "Detach volume %s" msgstr "" -#: nova/api/ec2/cloud.py:839 +#: nova/api/ec2/cloud.py:838 msgid "Detach Volume Failed." msgstr "" -#: nova/api/ec2/cloud.py:865 nova/api/ec2/cloud.py:922 -#: nova/api/ec2/cloud.py:1458 nova/api/ec2/cloud.py:1473 +#: nova/api/ec2/cloud.py:864 nova/api/ec2/cloud.py:921 +#: nova/api/ec2/cloud.py:1457 nova/api/ec2/cloud.py:1472 #, python-format msgid "attribute not supported: %s" msgstr "" -#: nova/api/ec2/cloud.py:987 +#: nova/api/ec2/cloud.py:986 #, python-format msgid "vol = %s\n" msgstr "" -#: nova/api/ec2/cloud.py:1138 +#: nova/api/ec2/cloud.py:1137 msgid "Allocate address" msgstr "" -#: nova/api/ec2/cloud.py:1142 +#: nova/api/ec2/cloud.py:1141 msgid "No more floating IPs available" msgstr "" -#: nova/api/ec2/cloud.py:1146 +#: nova/api/ec2/cloud.py:1145 #, python-format msgid "Release address %s" msgstr "" -#: nova/api/ec2/cloud.py:1151 +#: nova/api/ec2/cloud.py:1150 msgid "Unable to release IP Address." msgstr "" -#: nova/api/ec2/cloud.py:1154 +#: nova/api/ec2/cloud.py:1153 #, python-format msgid "Associate address %(public_ip)s to instance %(instance_id)s" msgstr "" -#: nova/api/ec2/cloud.py:1162 +#: nova/api/ec2/cloud.py:1161 msgid "Unable to associate IP Address, no fixed_ips." msgstr "" -#: nova/api/ec2/cloud.py:1170 +#: nova/api/ec2/cloud.py:1169 #: nova/api/openstack/compute/contrib/floating_ips.py:257 #, python-format msgid "multiple fixed_ips exist, using the first: %s" msgstr "" -#: nova/api/ec2/cloud.py:1179 +#: nova/api/ec2/cloud.py:1178 msgid "Floating ip is already associated." msgstr "" -#: nova/api/ec2/cloud.py:1182 +#: nova/api/ec2/cloud.py:1181 msgid "l3driver call to add floating ip failed." msgstr "" -#: nova/api/ec2/cloud.py:1185 +#: nova/api/ec2/cloud.py:1184 msgid "Error, unable to associate floating ip." msgstr "" -#: nova/api/ec2/cloud.py:1193 +#: nova/api/ec2/cloud.py:1192 #, python-format msgid "Disassociate address %s" msgstr "" -#: nova/api/ec2/cloud.py:1198 +#: nova/api/ec2/cloud.py:1197 msgid "Floating ip is not associated." msgstr "" -#: nova/api/ec2/cloud.py:1201 +#: nova/api/ec2/cloud.py:1200 #: nova/api/openstack/compute/contrib/floating_ips.py:100 msgid "Cannot disassociate auto assigned floating ip" msgstr "" -#: nova/api/ec2/cloud.py:1228 +#: nova/api/ec2/cloud.py:1227 msgid "Image must be available" msgstr "" -#: nova/api/ec2/cloud.py:1260 +#: nova/api/ec2/cloud.py:1259 msgid "Going to start terminating instances" msgstr "" -#: nova/api/ec2/cloud.py:1270 +#: nova/api/ec2/cloud.py:1269 #, python-format msgid "Reboot instance %r" msgstr "" -#: nova/api/ec2/cloud.py:1279 +#: nova/api/ec2/cloud.py:1278 msgid "Going to stop instances" msgstr "" -#: nova/api/ec2/cloud.py:1288 +#: nova/api/ec2/cloud.py:1287 msgid "Going to start instances" msgstr "" -#: nova/api/ec2/cloud.py:1379 +#: nova/api/ec2/cloud.py:1378 #, python-format msgid "De-registering image %s" msgstr "" -#: nova/api/ec2/cloud.py:1395 +#: nova/api/ec2/cloud.py:1394 msgid "imageLocation is required" msgstr "" -#: nova/api/ec2/cloud.py:1414 +#: nova/api/ec2/cloud.py:1413 #, python-format msgid "Registered image %(image_location)s with id %(image_id)s" msgstr "" -#: nova/api/ec2/cloud.py:1476 +#: nova/api/ec2/cloud.py:1475 msgid "user or group not specified" msgstr "" -#: nova/api/ec2/cloud.py:1478 +#: nova/api/ec2/cloud.py:1477 msgid "only group \"all\" is supported" msgstr "" -#: nova/api/ec2/cloud.py:1480 +#: nova/api/ec2/cloud.py:1479 msgid "operation_type must be add or remove" msgstr "" -#: nova/api/ec2/cloud.py:1482 +#: nova/api/ec2/cloud.py:1481 #, python-format msgid "Updating image %s publicity" msgstr "" -#: nova/api/ec2/cloud.py:1495 +#: nova/api/ec2/cloud.py:1494 #, python-format msgid "Not allowed to modify attributes for image %s" msgstr "" -#: nova/api/ec2/cloud.py:1524 +#: nova/api/ec2/cloud.py:1523 #, 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:1554 +#: nova/api/ec2/cloud.py:1553 #, python-format msgid "Couldn't stop instance with in %d sec" msgstr "" -#: nova/api/ec2/cloud.py:1572 +#: nova/api/ec2/cloud.py:1571 #, python-format msgid "image of %(instance)s at %(now)s" msgstr "" -#: nova/api/ec2/cloud.py:1605 +#: nova/api/ec2/cloud.py:1604 msgid "Invalid CIDR" msgstr "" @@ -1722,7 +1722,7 @@ msgstr "" msgid "Timestamp is invalid." msgstr "" -#: nova/api/metadata/handler.py:79 nova/api/metadata/handler.py:86 +#: nova/api/metadata/handler.py:78 nova/api/metadata/handler.py:85 #, python-format msgid "Failed to get metadata for ip: %s" msgstr "" @@ -1758,70 +1758,70 @@ msgstr "" msgid "Extension %(ext_name)s extending resource: %(collection)s" msgstr "" -#: nova/api/openstack/common.py:100 +#: nova/api/openstack/common.py:99 #, 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:139 nova/api/openstack/common.py:173 +#: nova/api/openstack/common.py:138 nova/api/openstack/common.py:172 msgid "limit param must be an integer" msgstr "" -#: nova/api/openstack/common.py:142 nova/api/openstack/common.py:177 +#: nova/api/openstack/common.py:141 nova/api/openstack/common.py:176 msgid "limit param must be positive" msgstr "" -#: nova/api/openstack/common.py:167 +#: nova/api/openstack/common.py:166 msgid "offset param must be an integer" msgstr "" -#: nova/api/openstack/common.py:181 +#: nova/api/openstack/common.py:180 msgid "offset param must be positive" msgstr "" -#: nova/api/openstack/common.py:216 nova/api/openstack/compute/servers.py:538 +#: nova/api/openstack/common.py:215 nova/api/openstack/compute/servers.py:537 #, python-format msgid "marker [%s] not found" msgstr "" -#: nova/api/openstack/common.py:256 +#: nova/api/openstack/common.py:255 #, python-format msgid "href %s does not contain version" msgstr "" -#: nova/api/openstack/common.py:271 +#: nova/api/openstack/common.py:270 msgid "Image metadata limit exceeded" msgstr "" -#: nova/api/openstack/common.py:279 +#: nova/api/openstack/common.py:278 msgid "Image metadata key cannot be blank" msgstr "" -#: nova/api/openstack/common.py:282 +#: nova/api/openstack/common.py:281 msgid "Image metadata key too long" msgstr "" -#: nova/api/openstack/common.py:285 +#: nova/api/openstack/common.py:284 msgid "Invalid image metadata" msgstr "" -#: nova/api/openstack/common.py:336 +#: nova/api/openstack/common.py:335 #, python-format msgid "Cannot '%(action)s' while instance is in %(attr)s %(state)s" msgstr "" -#: nova/api/openstack/common.py:339 +#: nova/api/openstack/common.py:338 #, python-format msgid "Instance is in an invalid state for '%(action)s'" msgstr "" -#: nova/api/openstack/common.py:419 +#: nova/api/openstack/common.py:418 msgid "Rejecting snapshot request, snapshots currently disabled" msgstr "" -#: nova/api/openstack/common.py:421 +#: nova/api/openstack/common.py:420 msgid "Instance snapshots are not permitted at this time." msgstr "" @@ -1973,7 +1973,7 @@ msgstr "" msgid "subclasses must implement construct()!" msgstr "" -#: nova/api/openstack/compute/extensions.py:31 +#: nova/api/openstack/compute/extensions.py:30 msgid "Initializing extension manager." msgstr "" @@ -2048,225 +2048,225 @@ msgstr "" msgid "Metadata item was not found" msgstr "" -#: nova/api/openstack/compute/servers.py:447 -#: nova/api/openstack/compute/servers.py:459 -#: nova/api/openstack/compute/servers.py:554 -#: nova/api/openstack/compute/servers.py:722 -#: nova/api/openstack/compute/servers.py:983 -#: nova/api/openstack/compute/servers.py:1086 -#: nova/api/openstack/compute/servers.py:1236 +#: nova/api/openstack/compute/servers.py:446 +#: nova/api/openstack/compute/servers.py:458 +#: nova/api/openstack/compute/servers.py:553 +#: nova/api/openstack/compute/servers.py:721 +#: nova/api/openstack/compute/servers.py:982 +#: nova/api/openstack/compute/servers.py:1085 +#: nova/api/openstack/compute/servers.py:1235 msgid "Instance could not be found" msgstr "" -#: nova/api/openstack/compute/servers.py:498 +#: nova/api/openstack/compute/servers.py:497 msgid "Invalid changes-since value" msgstr "" -#: nova/api/openstack/compute/servers.py:517 +#: nova/api/openstack/compute/servers.py:516 msgid "Only administrators may list deleted instances" msgstr "" -#: nova/api/openstack/compute/servers.py:561 +#: nova/api/openstack/compute/servers.py:560 msgid "Server name is not a string or unicode" msgstr "" -#: nova/api/openstack/compute/servers.py:565 +#: nova/api/openstack/compute/servers.py:564 msgid "Server name is an empty string" msgstr "" -#: nova/api/openstack/compute/servers.py:569 +#: nova/api/openstack/compute/servers.py:568 msgid "Server name must be less than 256 characters." msgstr "" -#: nova/api/openstack/compute/servers.py:586 +#: nova/api/openstack/compute/servers.py:585 #, python-format msgid "Bad personality format: missing %s" msgstr "" -#: nova/api/openstack/compute/servers.py:589 +#: nova/api/openstack/compute/servers.py:588 msgid "Bad personality format" msgstr "" -#: nova/api/openstack/compute/servers.py:593 +#: nova/api/openstack/compute/servers.py:592 #, python-format msgid "Personality content for %s cannot be decoded" msgstr "" -#: nova/api/openstack/compute/servers.py:624 +#: nova/api/openstack/compute/servers.py:623 msgid "Unknown argment : port" msgstr "" -#: nova/api/openstack/compute/servers.py:627 +#: nova/api/openstack/compute/servers.py:626 #, python-format msgid "Bad port format: port uuid is not in proper format (%s)" msgstr "" -#: nova/api/openstack/compute/servers.py:637 +#: nova/api/openstack/compute/servers.py:636 #, python-format msgid "Bad networks format: network uuid is not in proper format (%s)" msgstr "" -#: nova/api/openstack/compute/servers.py:647 +#: nova/api/openstack/compute/servers.py:646 #, python-format msgid "Invalid fixed IP address (%s)" msgstr "" -#: nova/api/openstack/compute/servers.py:660 +#: nova/api/openstack/compute/servers.py:659 #, python-format msgid "Duplicate networks (%s) are not allowed" msgstr "" -#: nova/api/openstack/compute/servers.py:666 +#: nova/api/openstack/compute/servers.py:665 #, python-format msgid "Bad network format: missing %s" msgstr "" -#: nova/api/openstack/compute/servers.py:669 +#: nova/api/openstack/compute/servers.py:668 msgid "Bad networks format" msgstr "" -#: nova/api/openstack/compute/servers.py:695 +#: nova/api/openstack/compute/servers.py:694 msgid "Userdata content cannot be decoded" msgstr "" -#: nova/api/openstack/compute/servers.py:702 +#: nova/api/openstack/compute/servers.py:701 msgid "accessIPv4 is not proper IPv4 format" msgstr "" -#: nova/api/openstack/compute/servers.py:709 +#: nova/api/openstack/compute/servers.py:708 msgid "accessIPv6 is not proper IPv6 format" msgstr "" -#: nova/api/openstack/compute/servers.py:738 +#: nova/api/openstack/compute/servers.py:737 msgid "Server name is not defined" msgstr "" -#: nova/api/openstack/compute/servers.py:787 -#: nova/api/openstack/compute/servers.py:893 +#: nova/api/openstack/compute/servers.py:786 +#: nova/api/openstack/compute/servers.py:892 msgid "Invalid flavorRef provided." msgstr "" -#: nova/api/openstack/compute/servers.py:827 +#: nova/api/openstack/compute/servers.py:826 msgid "min_count must be an integer value" msgstr "" -#: nova/api/openstack/compute/servers.py:830 +#: nova/api/openstack/compute/servers.py:829 msgid "min_count must be > 0" msgstr "" -#: nova/api/openstack/compute/servers.py:835 +#: nova/api/openstack/compute/servers.py:834 msgid "max_count must be an integer value" msgstr "" -#: nova/api/openstack/compute/servers.py:838 +#: nova/api/openstack/compute/servers.py:837 msgid "max_count must be > 0" msgstr "" -#: nova/api/openstack/compute/servers.py:841 +#: nova/api/openstack/compute/servers.py:840 msgid "min_count must be <= max_count" msgstr "" -#: nova/api/openstack/compute/servers.py:890 +#: nova/api/openstack/compute/servers.py:889 msgid "Can not find requested image" msgstr "" -#: nova/api/openstack/compute/servers.py:896 +#: nova/api/openstack/compute/servers.py:895 msgid "Invalid key_name provided." msgstr "" -#: nova/api/openstack/compute/servers.py:975 +#: nova/api/openstack/compute/servers.py:974 msgid "HostId cannot be updated." msgstr "" -#: nova/api/openstack/compute/servers.py:1001 -#: nova/api/openstack/compute/servers.py:1021 +#: nova/api/openstack/compute/servers.py:1000 +#: nova/api/openstack/compute/servers.py:1020 msgid "Instance has not been resized." msgstr "" -#: nova/api/openstack/compute/servers.py:1007 +#: nova/api/openstack/compute/servers.py:1006 #, python-format msgid "Error in confirm-resize %s" msgstr "" -#: nova/api/openstack/compute/servers.py:1027 +#: nova/api/openstack/compute/servers.py:1026 #, python-format msgid "Error in revert-resize %s" msgstr "" -#: nova/api/openstack/compute/servers.py:1040 +#: nova/api/openstack/compute/servers.py:1039 msgid "Argument 'type' for reboot is not HARD or SOFT" msgstr "" -#: nova/api/openstack/compute/servers.py:1044 +#: nova/api/openstack/compute/servers.py:1043 msgid "Missing argument 'type' for reboot" msgstr "" -#: nova/api/openstack/compute/servers.py:1057 +#: nova/api/openstack/compute/servers.py:1056 #, python-format msgid "Error in reboot %s" msgstr "" -#: nova/api/openstack/compute/servers.py:1069 +#: nova/api/openstack/compute/servers.py:1068 msgid "Unable to locate requested flavor." msgstr "" -#: nova/api/openstack/compute/servers.py:1072 +#: nova/api/openstack/compute/servers.py:1071 msgid "Resize requires a flavor change." msgstr "" -#: nova/api/openstack/compute/servers.py:1096 +#: nova/api/openstack/compute/servers.py:1095 msgid "Missing imageRef attribute" msgstr "" -#: nova/api/openstack/compute/servers.py:1105 +#: nova/api/openstack/compute/servers.py:1104 msgid "Invalid imageRef provided." msgstr "" -#: nova/api/openstack/compute/servers.py:1114 +#: nova/api/openstack/compute/servers.py:1113 msgid "Missing flavorRef attribute" msgstr "" -#: nova/api/openstack/compute/servers.py:1127 +#: nova/api/openstack/compute/servers.py:1126 msgid "No adminPass was specified" msgstr "" -#: nova/api/openstack/compute/servers.py:1131 -#: nova/api/openstack/compute/servers.py:1333 +#: nova/api/openstack/compute/servers.py:1130 +#: nova/api/openstack/compute/servers.py:1332 msgid "Invalid adminPass" msgstr "" -#: nova/api/openstack/compute/servers.py:1142 +#: nova/api/openstack/compute/servers.py:1141 msgid "Unable to parse metadata key/value pairs." msgstr "" -#: nova/api/openstack/compute/servers.py:1155 +#: nova/api/openstack/compute/servers.py:1154 msgid "Resize request has invalid 'flavorRef' attribute." msgstr "" -#: nova/api/openstack/compute/servers.py:1158 +#: nova/api/openstack/compute/servers.py:1157 msgid "Resize requests require 'flavorRef' attribute." msgstr "" -#: nova/api/openstack/compute/servers.py:1176 +#: nova/api/openstack/compute/servers.py:1175 #: nova/api/openstack/compute/contrib/aggregates.py:142 #: nova/api/openstack/compute/contrib/keypairs.py:78 #: nova/api/openstack/compute/contrib/networks.py:73 msgid "Invalid request body" msgstr "" -#: nova/api/openstack/compute/servers.py:1181 +#: nova/api/openstack/compute/servers.py:1180 msgid "Could not parse imageRef from request." msgstr "" -#: nova/api/openstack/compute/servers.py:1243 +#: nova/api/openstack/compute/servers.py:1242 msgid "Cannot find image for rebuild" msgstr "" -#: nova/api/openstack/compute/servers.py:1276 +#: nova/api/openstack/compute/servers.py:1275 msgid "createImage entity requires name attribute" msgstr "" -#: nova/api/openstack/compute/servers.py:1360 +#: nova/api/openstack/compute/servers.py:1359 #, python-format msgid "Removing options '%(unk_opt_str)s' from query" msgstr "" @@ -2306,7 +2306,7 @@ msgstr "" #: nova/api/openstack/compute/contrib/admin_actions.py:187 #: nova/api/openstack/compute/contrib/admin_actions.py:309 #: nova/api/openstack/compute/contrib/multinic.py:41 -#: nova/api/openstack/compute/contrib/rescue.py:45 +#: nova/api/openstack/compute/contrib/rescue.py:44 msgid "Server not found" msgstr "" @@ -2412,7 +2412,7 @@ msgstr "" msgid "Only root certificate can be retrieved." msgstr "" -#: nova/api/openstack/compute/contrib/cloudpipe.py:149 +#: nova/api/openstack/compute/contrib/cloudpipe.py:148 msgid "" "Unable to claim IP for VPN instances, ensure it isn't running, and try " "again in a few minutes" @@ -2575,7 +2575,7 @@ msgstr "" msgid "No hypervisor matching '%s' could be found." msgstr "" -#: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:55 +#: nova/api/openstack/compute/contrib/instance_usage_audit_log.py:54 #, python-format msgid "Invalid timestamp for date %s" msgstr "" @@ -2723,23 +2723,23 @@ msgstr "" msgid "Instance has had its instance_type removed from the DB" msgstr "" -#: nova/cloudpipe/pipelib.py:45 +#: nova/cloudpipe/pipelib.py:44 msgid "Instance type for vpn instances" msgstr "" -#: nova/cloudpipe/pipelib.py:48 +#: nova/cloudpipe/pipelib.py:47 msgid "Template for cloudpipe instance boot script" msgstr "" -#: nova/cloudpipe/pipelib.py:51 +#: nova/cloudpipe/pipelib.py:50 msgid "Network to push into openvpn config" msgstr "" -#: nova/cloudpipe/pipelib.py:54 +#: nova/cloudpipe/pipelib.py:53 msgid "Netmask to push into openvpn config" msgstr "" -#: nova/cloudpipe/pipelib.py:106 +#: nova/cloudpipe/pipelib.py:105 #, python-format msgid "Launching VPN for %s" msgstr "" @@ -3631,197 +3631,145 @@ msgstr "" msgid "Using %(prefix)s instead of %(req_prefix)s" msgstr "" -#: nova/console/manager.py:82 nova/console/vmrc_manager.py:64 +#: nova/conductor/manager.py:45 +#, python-format +msgid "Instance update attempted for '%(key)s' on %(instance_uuid)s" +msgstr "" + +#: nova/console/manager.py:81 nova/console/vmrc_manager.py:63 msgid "Adding console" msgstr "" -#: nova/console/manager.py:103 nova/console/vmrc_manager.py:116 +#: nova/console/manager.py:102 nova/console/vmrc_manager.py:115 #, python-format msgid "Tried to remove non-existent console %(console_id)s." msgstr "" -#: nova/console/vmrc_manager.py:119 +#: nova/console/vmrc_manager.py:118 #, python-format msgid "Removing console %(console_id)s." msgstr "" -#: nova/console/xvp.py:99 +#: nova/console/xvp.py:98 msgid "Rebuilding xvp conf" msgstr "" -#: nova/console/xvp.py:117 +#: nova/console/xvp.py:116 #, python-format msgid "Re-wrote %s" msgstr "" -#: nova/console/xvp.py:122 +#: nova/console/xvp.py:121 msgid "Stopping xvp" msgstr "" -#: nova/console/xvp.py:135 +#: nova/console/xvp.py:134 msgid "Starting xvp" msgstr "" -#: nova/console/xvp.py:142 +#: nova/console/xvp.py:141 #, python-format msgid "Error starting xvp: %s" msgstr "" -#: nova/console/xvp.py:145 +#: nova/console/xvp.py:144 msgid "Restarting xvp" msgstr "" -#: nova/console/xvp.py:147 +#: nova/console/xvp.py:146 msgid "xvp not running..." msgstr "" -#: nova/consoleauth/manager.py:71 +#: nova/consoleauth/manager.py:70 #, python-format msgid "Received Token: %(token)s, %(token_dict)s)" msgstr "" -#: nova/consoleauth/manager.py:76 +#: nova/consoleauth/manager.py:75 #, python-format msgid "Checking Token: %(token)s, %(token_valid)s)" msgstr "" -#: nova/db/sqlalchemy/api.py:181 nova/virt/baremetal/db/sqlalchemy/api.py:67 +#: nova/db/sqlalchemy/api.py:180 nova/virt/baremetal/db/sqlalchemy/api.py:67 #, python-format msgid "Unrecognized read_deleted value '%s'" msgstr "" -#: nova/db/sqlalchemy/api.py:2704 +#: nova/db/sqlalchemy/api.py:2708 #, python-format msgid "Change will make usage less than 0 for the following resources: %(unders)s" msgstr "" #: nova/db/sqlalchemy/migration.py:72 -#: nova/virt/baremetal/db/sqlalchemy/migration.py:69 +#: nova/virt/baremetal/db/sqlalchemy/migration.py:70 msgid "version should be an integer" msgstr "" #: nova/db/sqlalchemy/migration.py:99 -#: nova/virt/baremetal/db/sqlalchemy/migration.py:96 +#: nova/virt/baremetal/db/sqlalchemy/migration.py:97 msgid "Upgrade DB using Essex release first." msgstr "" -#: nova/db/sqlalchemy/session.py:322 +#: nova/db/sqlalchemy/session.py:321 #, python-format msgid "SQL connection failed. %s attempts left." msgstr "" -#: nova/db/sqlalchemy/migrate_repo/versions/083_quota_class.py:50 -#: nova/db/sqlalchemy/migrate_repo/versions/092_add_instance_system_metadata.py:60 -#: nova/db/sqlalchemy/migrate_repo/versions/097_quota_usages_reservations.py:53 -#: nova/db/sqlalchemy/migrate_repo/versions/097_quota_usages_reservations.py:86 -#: nova/db/sqlalchemy/migrate_repo/versions/115_make_user_quotas_key_and_value.py:74 -#: nova/db/sqlalchemy/migrate_repo/versions/116_drop_user_quotas_key_and_value.py:97 -#: nova/db/sqlalchemy/migrate_repo/versions/132_add_instance_type_projects.py:52 -#, python-format -msgid "Table |%s| not created!" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/083_quota_class.py:62 -msgid "quota_classes table not dropped" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/088_change_instance_id_to_uuid_in_block_device_mapping.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/100_instance_metadata_uses_uuid.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/101_security_group_instance_association_uses_uuid.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/102_consoles_uses_uuid.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/105_instance_info_caches_uses_uuid.py:44 -#: nova/db/sqlalchemy/migrate_repo/versions/105_instance_info_caches_uses_uuid.py:67 -#: nova/db/sqlalchemy/migrate_repo/versions/109_drop_dns_domains_project_id_fkey.py:43 -#: nova/db/sqlalchemy/migrate_repo/versions/113_fixed_ips_uses_uuid.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/113_fixed_ips_uses_uuid.py:87 -#: nova/db/sqlalchemy/migrate_repo/versions/114_vifs_uses_uuid.py:56 -#: nova/db/sqlalchemy/migrate_repo/versions/114_vifs_uses_uuid.py:87 -msgid "foreign key constraint couldn't be removed" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/090_modify_volume_id_datatype.py:84 -#: nova/db/sqlalchemy/migrate_repo/versions/090_modify_volume_id_datatype.py:128 -#: nova/db/sqlalchemy/migrate_repo/versions/090_modify_volume_id_datatype.py:178 -#: nova/db/sqlalchemy/migrate_repo/versions/090_modify_volume_id_datatype.py:236 -msgid "Foreign Key constraint couldn't be removed" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/095_change_fk_instance_id_to_uuid.py:57 -msgid "foreign key could not be dropped" +#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:62 +msgid "Exception while seeding instance_types table" msgstr "" -#: nova/db/sqlalchemy/migrate_repo/versions/095_change_fk_instance_id_to_uuid.py:91 -msgid "foreign key could not be created" +#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:927 +msgid "Exception while creating table." msgstr "" -#: nova/db/sqlalchemy/migrate_repo/versions/097_quota_usages_reservations.py:98 -msgid "quota_usages table not dropped" +#: nova/db/sqlalchemy/migrate_repo/versions/133_folsom.py:1225 +msgid "Downgrade from Folsom is unsupported." msgstr "" -#: nova/db/sqlalchemy/migrate_repo/versions/097_quota_usages_reservations.py:105 -msgid "reservations table not dropped" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/106_add_foreign_keys.py:45 -#: nova/db/sqlalchemy/migrate_repo/versions/113_fixed_ips_uses_uuid.py:66 -#: nova/db/sqlalchemy/migrate_repo/versions/113_fixed_ips_uses_uuid.py:107 -#: nova/db/sqlalchemy/migrate_repo/versions/114_vifs_uses_uuid.py:66 -#: nova/db/sqlalchemy/migrate_repo/versions/114_vifs_uses_uuid.py:107 -msgid "foreign key constraint couldn't be created" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/106_add_foreign_keys.py:66 -msgid "foreign key constraint couldn't be dropped" -msgstr "" - -#: nova/db/sqlalchemy/migrate_repo/versions/115_make_user_quotas_key_and_value.py:93 -#: nova/db/sqlalchemy/migrate_repo/versions/116_drop_user_quotas_key_and_value.py:43 -msgid "user_quotas table not dropped" -msgstr "" - -#: nova/image/glance.py:144 +#: nova/image/glance.py:143 #, python-format msgid "" "Error contacting glance server '%(host)s:%(port)s' for '%(method)s', " "%(extra)s." msgstr "" -#: nova/image/s3.py:312 +#: nova/image/s3.py:311 #, python-format msgid "Failed to download %(image_location)s to %(image_path)s" msgstr "" -#: nova/image/s3.py:329 +#: nova/image/s3.py:328 #, python-format msgid "Failed to decrypt %(image_location)s to %(image_path)s" msgstr "" -#: nova/image/s3.py:339 +#: nova/image/s3.py:338 #, python-format msgid "Failed to untar %(image_location)s to %(image_path)s" msgstr "" -#: nova/image/s3.py:349 +#: nova/image/s3.py:348 #, python-format msgid "Failed to upload %(image_location)s to %(image_path)s" msgstr "" -#: nova/image/s3.py:373 +#: nova/image/s3.py:372 #, python-format msgid "Failed to decrypt private key: %s" msgstr "" -#: nova/image/s3.py:380 +#: nova/image/s3.py:379 #, python-format msgid "Failed to decrypt initialization vector: %s" msgstr "" -#: nova/image/s3.py:391 +#: nova/image/s3.py:390 #, python-format msgid "Failed to decrypt image file %(image_file)s: %(err)s" msgstr "" -#: nova/image/s3.py:403 +#: nova/image/s3.py:402 msgid "Unsafe filenames in image" msgstr "" @@ -3859,164 +3807,164 @@ msgstr "" msgid "re-assign floating IP %(address)s from instance %(instance_id)s" msgstr "" -#: nova/network/ldapdns.py:318 +#: nova/network/ldapdns.py:317 msgid "This driver only supports type 'a' entries." msgstr "" -#: nova/network/linux_net.py:180 +#: nova/network/linux_net.py:179 #, python-format msgid "Attempted to remove chain %s which does not exist" msgstr "" -#: nova/network/linux_net.py:215 +#: nova/network/linux_net.py:214 #, python-format msgid "Unknown chain: %r" msgstr "" -#: nova/network/linux_net.py:240 +#: nova/network/linux_net.py:239 #, 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:375 +#: nova/network/linux_net.py:374 msgid "IPTablesManager.apply completed with success" msgstr "" -#: nova/network/linux_net.py:581 +#: nova/network/linux_net.py:580 #, python-format msgid "arping error for ip %s" msgstr "" -#: nova/network/linux_net.py:792 +#: nova/network/linux_net.py:791 #, python-format msgid "Pid %d is stale, skip killing dnsmasq" msgstr "" -#: nova/network/linux_net.py:832 +#: nova/network/linux_net.py:831 #, python-format msgid "Hupping dnsmasq threw %s" msgstr "" -#: nova/network/linux_net.py:834 +#: nova/network/linux_net.py:833 #, python-format msgid "Pid %d is stale, relaunching dnsmasq" msgstr "" -#: nova/network/linux_net.py:897 +#: nova/network/linux_net.py:896 #, python-format msgid "killing radvd threw %s" msgstr "" -#: nova/network/linux_net.py:899 +#: nova/network/linux_net.py:898 #, python-format msgid "Pid %d is stale, relaunching radvd" msgstr "" -#: nova/network/linux_net.py:1129 +#: nova/network/linux_net.py:1128 #, python-format msgid "Starting VLAN inteface %s" msgstr "" -#: nova/network/linux_net.py:1168 +#: nova/network/linux_net.py:1167 #, python-format msgid "Starting Bridge %s" msgstr "" -#: nova/network/linux_net.py:1180 +#: nova/network/linux_net.py:1179 #, python-format msgid "Adding interface %(interface)s to bridge %(bridge)s" msgstr "" -#: nova/network/linux_net.py:1213 +#: nova/network/linux_net.py:1212 #, python-format msgid "Failed to add interface: %s" msgstr "" -#: nova/network/linux_net.py:1315 +#: nova/network/linux_net.py:1314 #, python-format msgid "Starting bridge %s " msgstr "" -#: nova/network/linux_net.py:1323 +#: nova/network/linux_net.py:1322 #, python-format msgid "Done starting bridge %s" msgstr "" -#: nova/network/linux_net.py:1342 +#: nova/network/linux_net.py:1341 #, python-format msgid "Failed unplugging gateway interface '%s'" msgstr "" -#: nova/network/linux_net.py:1344 +#: nova/network/linux_net.py:1343 #, python-format msgid "Unplugged gateway interface '%s'" msgstr "" -#: nova/network/manager.py:286 +#: nova/network/manager.py:285 #, python-format msgid "Fixed ip %(fixed_ip_id)s not found" msgstr "" -#: nova/network/manager.py:295 nova/network/manager.py:554 +#: nova/network/manager.py:294 nova/network/manager.py:553 #, python-format msgid "Interface %(interface)s not found" msgstr "" -#: nova/network/manager.py:310 +#: nova/network/manager.py:309 #, python-format msgid "floating IP allocation for instance |%s|" msgstr "" -#: nova/network/manager.py:374 +#: nova/network/manager.py:373 msgid "Floating IP is not associated. Ignore." msgstr "" -#: nova/network/manager.py:392 +#: nova/network/manager.py:391 #, python-format msgid "Address |%(address)s| is not allocated" msgstr "" -#: nova/network/manager.py:396 +#: nova/network/manager.py:395 #, python-format msgid "Address |%(address)s| is not allocated to your project |%(project)s|" msgstr "" -#: nova/network/manager.py:417 +#: nova/network/manager.py:416 #, python-format msgid "Quota exceeded for %(pid)s, tried to allocate floating IP" msgstr "" -#: nova/network/manager.py:478 +#: nova/network/manager.py:477 msgid "Failed to update usages deallocating floating IP" msgstr "" -#: nova/network/manager.py:677 +#: nova/network/manager.py:676 #, python-format msgid "Starting migration network for instance %(instance_uuid)s" msgstr "" -#: nova/network/manager.py:684 +#: nova/network/manager.py:683 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notmigrate it " msgstr "" -#: nova/network/manager.py:714 +#: nova/network/manager.py:713 #, python-format msgid "Finishing migration network for instance %(instance_uuid)s" msgstr "" -#: nova/network/manager.py:722 +#: nova/network/manager.py:721 #, python-format msgid "" "Floating ip address |%(address)s| no longer belongs to instance " "%(instance_uuid)s. Will notsetup it." msgstr "" -#: nova/network/manager.py:769 +#: nova/network/manager.py:768 #, python-format msgid "" "Database inconsistency: DNS domain |%s| is registered in the Nova db but " @@ -4024,39 +3972,39 @@ msgid "" "ignored." msgstr "" -#: nova/network/manager.py:815 +#: nova/network/manager.py:814 #, python-format msgid "Domain |%(domain)s| already exists, changing zone to |%(av_zone)s|." msgstr "" -#: nova/network/manager.py:825 +#: nova/network/manager.py:824 #, python-format msgid "Domain |%(domain)s| already exists, changing project to |%(project)s|." msgstr "" -#: nova/network/manager.py:939 +#: nova/network/manager.py:938 #, python-format msgid "Disassociated %s stale fixed ip(s)" msgstr "" -#: nova/network/manager.py:943 +#: nova/network/manager.py:942 msgid "setting network host" msgstr "" -#: nova/network/manager.py:1057 +#: nova/network/manager.py:1056 msgid "network allocations" msgstr "" -#: nova/network/manager.py:1062 +#: nova/network/manager.py:1061 #, python-format msgid "networks retrieved for instance: |%(networks)s|" msgstr "" -#: nova/network/manager.py:1092 +#: nova/network/manager.py:1091 msgid "network deallocation for instance" msgstr "" -#: nova/network/manager.py:1319 +#: nova/network/manager.py:1318 #, python-format msgid "" "instance-dns-zone is |%(domain)s|, which is in availability zone " @@ -4064,96 +4012,96 @@ msgid "" "created." msgstr "" -#: nova/network/manager.py:1400 +#: nova/network/manager.py:1403 #, python-format msgid "Unable to release %s because vif doesn't exist." msgstr "" -#: nova/network/manager.py:1421 +#: nova/network/manager.py:1420 #, python-format msgid "Leased IP |%(address)s|" msgstr "" -#: nova/network/manager.py:1425 +#: nova/network/manager.py:1424 #, python-format msgid "IP %s leased that is not associated" msgstr "" -#: nova/network/manager.py:1433 +#: nova/network/manager.py:1432 #, python-format msgid "IP |%s| leased that isn't allocated" msgstr "" -#: nova/network/manager.py:1438 +#: nova/network/manager.py:1437 #, python-format msgid "Released IP |%(address)s|" msgstr "" -#: nova/network/manager.py:1442 +#: nova/network/manager.py:1441 #, python-format msgid "IP %s released that is not associated" msgstr "" -#: nova/network/manager.py:1445 +#: nova/network/manager.py:1444 #, python-format msgid "IP %s released that was not leased" msgstr "" -#: nova/network/manager.py:1464 +#: nova/network/manager.py:1463 #, python-format msgid "%s must be an integer" msgstr "" -#: nova/network/manager.py:1488 +#: nova/network/manager.py:1487 msgid "Maximum allowed length for 'label' is 255." msgstr "" -#: nova/network/manager.py:1508 +#: nova/network/manager.py:1507 #, python-format msgid "" "Subnet(s) too large, defaulting to /%s. To override, specify " "network_size flag." msgstr "" -#: nova/network/manager.py:1589 +#: nova/network/manager.py:1588 msgid "cidr already in use" msgstr "" -#: nova/network/manager.py:1592 +#: nova/network/manager.py:1591 #, python-format msgid "requested cidr (%(cidr)s) conflicts with existing supernet (%(super)s)" msgstr "" -#: nova/network/manager.py:1603 +#: nova/network/manager.py:1602 #, python-format msgid "" "requested cidr (%(cidr)s) conflicts with existing smaller cidr " "(%(smaller)s)" msgstr "" -#: nova/network/manager.py:1660 +#: nova/network/manager.py:1659 msgid "Network already exists!" msgstr "" -#: nova/network/manager.py:1680 +#: nova/network/manager.py:1679 #, python-format msgid "Network must be disassociated from project %s before delete" msgstr "" -#: nova/network/manager.py:2150 +#: nova/network/manager.py:2149 msgid "" "The sum between the number of networks and the vlan start cannot be " "greater than 4094" msgstr "" -#: nova/network/manager.py:2157 +#: nova/network/manager.py:2156 #, python-format msgid "" "The network range is not big enough to fit %(num_networks)s. Network size" " is %(network_size)s" msgstr "" -#: nova/network/minidns.py:68 +#: nova/network/minidns.py:67 msgid "This driver only supports type 'a'" msgstr "" @@ -4175,46 +4123,46 @@ msgstr "" msgid "No fixed IPs to deallocate for vif %s" msgstr "" -#: nova/network/quantumv2/__init__.py:42 +#: nova/network/quantumv2/__init__.py:41 msgid "_get_auth_token() failed" msgstr "" -#: nova/network/quantumv2/api.py:103 +#: nova/network/quantumv2/api.py:102 #, python-format msgid "allocate_for_instance() for %s" msgstr "" -#: nova/network/quantumv2/api.py:106 +#: nova/network/quantumv2/api.py:105 #, python-format msgid "empty project id for instance %s" msgstr "" -#: nova/network/quantumv2/api.py:159 +#: nova/network/quantumv2/api.py:158 #, python-format msgid "Fail to delete port %(portid)s with failure: %(exception)s" msgstr "" -#: nova/network/quantumv2/api.py:171 +#: nova/network/quantumv2/api.py:170 #, python-format msgid "deallocate_for_instance() for %s" msgstr "" -#: nova/network/quantumv2/api.py:180 +#: nova/network/quantumv2/api.py:179 #, python-format msgid "Failed to delete quantum port %(portid)s " msgstr "" -#: nova/network/quantumv2/api.py:190 +#: nova/network/quantumv2/api.py:189 #, python-format msgid "get_instance_nw_info() for %s" msgstr "" -#: nova/network/quantumv2/api.py:205 +#: nova/network/quantumv2/api.py:204 #, python-format msgid "validate_networks() for %s" msgstr "" -#: nova/network/quantumv2/api.py:457 +#: nova/network/quantumv2/api.py:456 #, python-format msgid "Multiple floating IP pools matches found for name '%s'" msgstr "" @@ -4756,7 +4704,7 @@ msgstr "" msgid "VCPUs not set; assuming CPU collection broken" msgstr "" -#: nova/scheduler/filters/disk_filter.py:48 +#: nova/scheduler/filters/disk_filter.py:47 #, python-format msgid "" "%(host_state)s does not have %(requested_disk)s MB usable disk, it only " @@ -4789,21 +4737,21 @@ msgstr "" msgid "%(host_state)s does not support requested instance_properties" msgstr "" -#: nova/scheduler/filters/io_ops_filter.py:43 +#: 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:40 +#: 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:47 +#: 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" @@ -4815,7 +4763,7 @@ msgstr "" msgid "Previously tried hosts: %(hosts)s. (host=%(host)s)" msgstr "" -#: nova/scheduler/filters/trusted_filter.py:202 +#: nova/scheduler/filters/trusted_filter.py:201 #, python-format msgid "TCP: trust state of %(host)s:%(level)s(%(trust)s)" msgstr "" @@ -4848,15 +4796,15 @@ msgstr "" msgid "Reply to faked command is stdout='%(stdout)s' stderr='%(stderr)s'" msgstr "" -#: nova/tests/fake_volume.py:182 nova/volume/cinder.py:160 +#: nova/tests/fake_volume.py:182 nova/volume/cinder.py:159 msgid "status must be available" msgstr "" -#: nova/tests/fake_volume.py:186 nova/volume/cinder.py:163 +#: nova/tests/fake_volume.py:186 nova/volume/cinder.py:162 msgid "already attached" msgstr "" -#: nova/tests/fake_volume.py:191 nova/volume/cinder.py:169 +#: nova/tests/fake_volume.py:191 nova/volume/cinder.py:168 msgid "already detached" msgstr "" @@ -4876,16 +4824,6 @@ msgstr "" msgid "Expected a function in 'auth[1]' parameter" msgstr "" -#: nova/tests/test_libvirt.py:211 -#, python-format -msgid "Could not find iSCSI export for volume %s" -msgstr "" - -#: nova/tests/test_libvirt.py:215 -#, python-format -msgid "ISCSI Discovery: Found %s" -msgstr "" - #: nova/tests/test_misc.py:62 #, python-format msgid "" @@ -4929,12 +4867,12 @@ msgstr "" msgid "uuid" msgstr "" -#: nova/tests/test_xenapi.py:727 +#: nova/tests/test_xenapi.py:726 #, python-format msgid "Creating files in %s to simulate guest agent" msgstr "" -#: nova/tests/test_xenapi.py:738 +#: nova/tests/test_xenapi.py:737 #, python-format msgid "Removing simulated guest agent files in %s" msgstr "" @@ -4951,17 +4889,17 @@ msgstr "" msgid "unexpected role header" msgstr "" -#: nova/tests/api/openstack/compute/test_servers.py:2999 +#: nova/tests/api/openstack/compute/test_servers.py:2997 msgid "" "Quota exceeded for instances: Requested 1, but already used 10 of 10 " "instances" msgstr "" -#: nova/tests/api/openstack/compute/test_servers.py:3004 +#: nova/tests/api/openstack/compute/test_servers.py:3002 msgid "Quota exceeded for ram: Requested 4096, but already used 8192 of 10240 ram" msgstr "" -#: nova/tests/api/openstack/compute/test_servers.py:3009 +#: nova/tests/api/openstack/compute/test_servers.py:3007 msgid "Quota exceeded for cores: Requested 2, but already used 9 of 10 cores" msgstr "" @@ -5016,28 +4954,28 @@ msgstr "" msgid "test_snapshot_detail: resp_dict=%s" msgstr "" -#: nova/tests/compute/test_compute.py:626 -#: nova/tests/compute/test_compute.py:644 -#: nova/tests/compute/test_compute.py:680 -#: nova/tests/compute/test_compute.py:705 -#: nova/tests/compute/test_compute.py:2384 +#: nova/tests/compute/test_compute.py:625 +#: nova/tests/compute/test_compute.py:643 +#: nova/tests/compute/test_compute.py:679 +#: nova/tests/compute/test_compute.py:704 +#: nova/tests/compute/test_compute.py:2383 #, python-format msgid "Running instances: %s" msgstr "" -#: nova/tests/compute/test_compute.py:632 -#: nova/tests/compute/test_compute.py:667 -#: nova/tests/compute/test_compute.py:693 -#: nova/tests/compute/test_compute.py:723 +#: nova/tests/compute/test_compute.py:631 +#: nova/tests/compute/test_compute.py:666 +#: nova/tests/compute/test_compute.py:692 +#: nova/tests/compute/test_compute.py:722 #, python-format msgid "After terminating instances: %s" msgstr "" -#: nova/tests/compute/test_compute.py:1100 +#: nova/tests/compute/test_compute.py:1099 msgid "Internal error" msgstr "" -#: nova/tests/compute/test_compute.py:2395 +#: nova/tests/compute/test_compute.py:2394 #, python-format msgid "After force-killing instances: %s" msgstr "" @@ -5052,7 +4990,7 @@ msgstr "" msgid "Failed to destroy vm %s" msgstr "" -#: nova/tests/hyperv/hypervutils.py:242 nova/virt/hyperv/snapshotops.py:93 +#: nova/tests/hyperv/hypervutils.py:242 nova/virt/hyperv/snapshotops.py:92 #, python-format msgid "Failed to get info for disk %s" msgstr "" @@ -5079,12 +5017,12 @@ msgid "" "arguments \"%(params)s\"" msgstr "" -#: nova/tests/integrated/test_api_samples.py:141 +#: nova/tests/integrated/test_api_samples.py:140 #, python-format msgid "Result: %(result)s is not a dict." msgstr "" -#: nova/tests/integrated/test_api_samples.py:145 +#: nova/tests/integrated/test_api_samples.py:144 #, python-format msgid "" "Key mismatch:\n" @@ -5092,25 +5030,25 @@ msgid "" "%(res_keys)s" msgstr "" -#: nova/tests/integrated/test_api_samples.py:153 +#: nova/tests/integrated/test_api_samples.py:152 #, python-format msgid "Result: %(result)s is not a list." msgstr "" -#: nova/tests/integrated/test_api_samples.py:156 +#: nova/tests/integrated/test_api_samples.py:155 #, python-format msgid "" "Length mismatch: %(result)s\n" "%(expected)s." msgstr "" -#: nova/tests/integrated/test_api_samples.py:167 +#: nova/tests/integrated/test_api_samples.py:166 #, python-format msgid "Result: %(res_obj)s not in %(expected)s." msgstr "" -#: nova/tests/integrated/test_api_samples.py:185 -#: nova/tests/integrated/test_api_samples.py:198 +#: nova/tests/integrated/test_api_samples.py:184 +#: nova/tests/integrated/test_api_samples.py:197 #, python-format msgid "" "Values do not match:\n" @@ -5172,349 +5110,90 @@ msgstr "" msgid "Decoding JSON: %s" msgstr "" -#: nova/virt/configdrive.py:82 +#: nova/virt/configdrive.py:81 #, python-format msgid "Added %(filepath)s to config drive" msgstr "" -#: nova/virt/firewall.py:180 nova/virt/libvirt/firewall.py:250 +#: nova/virt/firewall.py:179 nova/virt/libvirt/firewall.py:249 msgid "Attempted to unfilter instance which is not filtered" msgstr "" -#: nova/virt/firewall.py:191 +#: nova/virt/firewall.py:190 msgid "Filters added to instance" msgstr "" -#: nova/virt/firewall.py:193 +#: nova/virt/firewall.py:192 msgid "Provider Firewall Rules refreshed" msgstr "" -#: nova/virt/firewall.py:361 +#: nova/virt/firewall.py:360 #, python-format msgid "Adding security group rule: %r" msgstr "" -#: nova/virt/firewall.py:492 nova/virt/xenapi/firewall.py:76 +#: nova/virt/firewall.py:491 nova/virt/xenapi/firewall.py:76 #, python-format msgid "Adding provider rule: %s" msgstr "" -#: nova/virt/images.py:115 +#: nova/virt/images.py:114 msgid "Snapshot list encountered but no header found!" msgstr "" -#: nova/virt/images.py:214 +#: nova/virt/images.py:213 msgid "'qemu-img info' parsing failed." msgstr "" -#: nova/virt/images.py:220 +#: nova/virt/images.py:219 #, python-format msgid "fmt=%(fmt)s backed by: %(backing_file)s" msgstr "" -#: nova/virt/images.py:231 +#: nova/virt/images.py:230 #, python-format msgid "Converted to raw, but format is now %s" msgstr "" -#: nova/virt/baremetal/dom.py:91 -msgid "No domains exist." -msgstr "" - -#: nova/virt/baremetal/dom.py:93 -#, python-format -msgid "============= initial domains =========== : %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:97 -msgid "Building domain: to be removed" -msgstr "" - -#: nova/virt/baremetal/dom.py:101 -msgid "Not running domain: remove" -msgstr "" - -#: nova/virt/baremetal/dom.py:109 -msgid "domain running on an unknown node: discarded" -msgstr "" - -#: nova/virt/baremetal/dom.py:125 -#, python-format -msgid "No such domain (%s)" -msgstr "" - -#: nova/virt/baremetal/dom.py:132 -#, python-format -msgid "Failed power down Bare-metal node %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:141 -msgid "deactivate -> activate fails" -msgstr "" - -#: nova/virt/baremetal/dom.py:151 -msgid "destroy_domain: no such domain" -msgstr "" - -#: nova/virt/baremetal/dom.py:152 -#, python-format -msgid "No such domain %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:159 -#, python-format -msgid "Domains: %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:162 -#, python-format -msgid "After storing domains: %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:165 -msgid "deactivation/removing domain failed" -msgstr "" - -#: nova/virt/baremetal/dom.py:172 -msgid "===== Domain is being created =====" -msgstr "" - -#: nova/virt/baremetal/dom.py:175 -msgid "Same domain name already exists" -msgstr "" - -#: nova/virt/baremetal/dom.py:177 -msgid "create_domain: before get_idle_node" -msgstr "" - -#: nova/virt/baremetal/dom.py:194 -#, python-format -msgid "Created new domain: %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:209 -#, python-format -msgid "Failed to boot Bare-metal node %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:218 -msgid "No such domain exists" -msgstr "" - -#: nova/virt/baremetal/dom.py:222 -#, python-format -msgid "change_domain_state: to new state %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:229 -#, python-format -msgid "Stored fake domains to the file: %s" -msgstr "" - -#: nova/virt/baremetal/dom.py:240 -msgid "domain does not exist" -msgstr "" - -#: nova/virt/baremetal/driver.py:117 -#, python-format -msgid "Error encountered when destroying instance '%(name)s': %(ex)s" -msgstr "" - -#: nova/virt/baremetal/driver.py:131 -#, python-format -msgid "instance %(instance_name)s: deleting instance files %(target)s" -msgstr "" - -#: nova/virt/baremetal/driver.py:158 -#, python-format -msgid "instance %s: rebooted" -msgstr "" - -#: nova/virt/baremetal/driver.py:162 -msgid "_wait_for_reboot failed" -msgstr "" - -#: nova/virt/baremetal/driver.py:191 -#, python-format -msgid "instance %s: rescued" -msgstr "" - -#: nova/virt/baremetal/driver.py:195 -msgid "_wait_for_rescue failed" -msgstr "" - -#: nova/virt/baremetal/driver.py:212 -msgid "<============= spawn of baremetal =============>" -msgstr "" - -#: nova/virt/baremetal/driver.py:225 -#, python-format -msgid "instance %s: is building" -msgstr "" - -#: nova/virt/baremetal/driver.py:231 -msgid "Key is injected but instance is not running yet" -msgstr "" - -#: nova/virt/baremetal/driver.py:240 -#, python-format -msgid "instance %s: booted" -msgstr "" - -#: nova/virt/baremetal/driver.py:247 -#, python-format -msgid "~~~~~~ current state = %s ~~~~~~" -msgstr "" - -#: nova/virt/baremetal/driver.py:249 -#, python-format -msgid "instance %s spawned successfully" -msgstr "" - -#: nova/virt/baremetal/driver.py:252 -#, python-format -msgid "instance %s:not booted" -msgstr "" - -#: nova/virt/baremetal/driver.py:255 -msgid "Baremetal assignment is overcommitted." -msgstr "" - -#: nova/virt/baremetal/driver.py:339 -#, python-format -msgid "instance %s: Creating image" -msgstr "" - -#: nova/virt/baremetal/driver.py:457 -#, python-format -msgid "instance %(inst_name)s: injecting %(injection)s into image %(img_id)s" -msgstr "" - -#: nova/virt/baremetal/driver.py:467 -#, python-format -msgid "" -"instance %(inst_name)s: ignoring error injecting data into image " -"%(img_id)s (%(e)s)" -msgstr "" - -#: nova/virt/baremetal/driver.py:513 -#, python-format -msgid "instance %s: starting toXML method" -msgstr "" - -#: nova/virt/baremetal/driver.py:516 -#, python-format -msgid "instance %s: finished toXML method" -msgstr "" - -#: nova/virt/baremetal/driver.py:560 nova/virt/hyperv/hostops.py:46 -#: nova/virt/libvirt/driver.py:1989 -msgid "" -"Cannot get the number of cpu, because this function is not implemented " -"for this platform. This error can be safely ignored for now." -msgstr "" - -#: nova/virt/baremetal/driver.py:684 -#, python-format -msgid "#### RLK: cpu_arch = %s " -msgstr "" - -#: nova/virt/baremetal/driver.py:701 -msgid "Updating!" -msgstr "" - -#: nova/virt/baremetal/driver.py:728 nova/virt/hyperv/hostops.py:132 -#: nova/virt/libvirt/driver.py:3037 nova/virt/xenapi/host.py:156 -msgid "Updating host stats" -msgstr "" - -#: nova/virt/baremetal/nodes.py:42 -#, python-format -msgid "Unknown baremetal driver %(d)s" -msgstr "" - -#: nova/virt/baremetal/tilera.py:185 -msgid "free_node...." -msgstr "" - -#: nova/virt/baremetal/tilera.py:216 -#, python-format -msgid "deactivate_node is called for node_id = %(id)s node_ip = %(ip)s" -msgstr "" - -#: nova/virt/baremetal/tilera.py:221 -msgid "status of node is set to 0" -msgstr "" - -#: nova/virt/baremetal/tilera.py:232 -msgid "rootfs is already removed" -msgstr "" - -#: nova/virt/baremetal/tilera.py:264 -msgid "Before ping to the bare-metal node" -msgstr "" - -#: nova/virt/baremetal/tilera.py:275 -#, python-format -msgid "TILERA_BOARD_#%(node_id)s %(node_ip)s is ready" -msgstr "" - -#: nova/virt/baremetal/tilera.py:279 -#, python-format -msgid "TILERA_BOARD_#%(node_id)s %(node_ip)s is not ready, out_msg=%(out_msg)s" -msgstr "" - -#: nova/virt/baremetal/tilera.py:291 -msgid "Noting to do for tilera nodes: vmlinux is in CF" -msgstr "" - -#: nova/virt/baremetal/tilera.py:314 -msgid "activate_node" -msgstr "" - -#: nova/virt/baremetal/tilera.py:328 -msgid "Node is unknown error state." -msgstr "" - -#: nova/virt/disk/api.py:190 +#: nova/virt/disk/api.py:189 msgid "no capable image handler configured" msgstr "" -#: nova/virt/disk/api.py:237 +#: nova/virt/disk/api.py:236 #, python-format msgid "no disk image handler for: %s" msgstr "" -#: nova/virt/disk/api.py:249 +#: nova/virt/disk/api.py:248 msgid "image already mounted" msgstr "" -#: nova/virt/disk/api.py:315 +#: nova/virt/disk/api.py:314 #, python-format msgid "" "Failed to mount container filesystem '%(image)s' on '%(target)s': " "%(errors)s" msgstr "" -#: nova/virt/disk/api.py:332 +#: nova/virt/disk/api.py:331 #, python-format msgid "Failed to unmount container filesystem: %s" msgstr "" -#: nova/virt/disk/api.py:365 +#: nova/virt/disk/api.py:364 msgid "injected file path not valid" msgstr "" -#: nova/virt/disk/api.py:510 +#: nova/virt/disk/api.py:509 msgid "Not implemented on Windows" msgstr "" -#: nova/virt/disk/api.py:544 +#: nova/virt/disk/api.py:543 #, python-format msgid "User %(username)s not found in password file." msgstr "" -#: nova/virt/disk/api.py:560 +#: nova/virt/disk/api.py:559 #, python-format msgid "User %(username)s not found in shadow file." msgstr "" @@ -5559,20 +5238,20 @@ msgstr "" msgid "Could not attach image to loopback: %s" msgstr "" -#: nova/virt/disk/mount/nbd.py:60 +#: nova/virt/disk/mount/nbd.py:59 msgid "nbd unavailable: module not loaded" msgstr "" -#: nova/virt/disk/mount/nbd.py:65 +#: nova/virt/disk/mount/nbd.py:64 msgid "No free nbd devices" msgstr "" -#: nova/virt/disk/mount/nbd.py:87 +#: nova/virt/disk/mount/nbd.py:86 #, python-format msgid "qemu-nbd error: %s" msgstr "" -#: nova/virt/disk/mount/nbd.py:99 +#: nova/virt/disk/mount/nbd.py:98 #, python-format msgid "nbd device %s did not show up" msgstr "" @@ -5605,6 +5284,12 @@ msgstr "" msgid "get_console_output called" msgstr "" +#: nova/virt/hyperv/hostops.py:46 nova/virt/libvirt/driver.py:1988 +msgid "" +"Cannot get the number of cpu, because this function is not implemented " +"for this platform. This error can be safely ignored for now." +msgstr "" + #: nova/virt/hyperv/hostops.py:102 #, python-format msgid "Windows version: %s " @@ -5614,140 +5299,145 @@ msgstr "" msgid "get_available_resource called" msgstr "" +#: nova/virt/hyperv/hostops.py:132 nova/virt/libvirt/driver.py:3036 +#: nova/virt/xenapi/host.py:156 +msgid "Updating host stats" +msgstr "" + #: nova/virt/hyperv/hostops.py:152 msgid "get_host_stats called" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:53 +#: nova/virt/hyperv/livemigrationops.py:52 msgid "" "Live migration is not supported \" \"by this version " "of Hyper-V" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:62 +#: nova/virt/hyperv/livemigrationops.py:61 msgid "Live migration is not enabled on this host" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:65 +#: nova/virt/hyperv/livemigrationops.py:64 msgid "Live migration networks are not configured on this host" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:69 +#: nova/virt/hyperv/livemigrationops.py:68 msgid "live_migration called" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:95 +#: nova/virt/hyperv/livemigrationops.py:94 #, python-format msgid "Getting live migration networks for remote host: %s" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:114 +#: nova/virt/hyperv/livemigrationops.py:113 #, python-format msgid "Starting live migration for instance: %s" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:127 +#: nova/virt/hyperv/livemigrationops.py:126 #, python-format msgid "Failed to live migrate VM %s" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:130 +#: nova/virt/hyperv/livemigrationops.py:129 #, python-format msgid "Calling live migration recover_method for instance: %s" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:134 +#: nova/virt/hyperv/livemigrationops.py:133 #, python-format msgid "Calling live migration post_method for instance: %s" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:140 +#: nova/virt/hyperv/livemigrationops.py:139 msgid "pre_live_migration called" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:158 +#: nova/virt/hyperv/livemigrationops.py:157 msgid "post_live_migration_at_destination called" msgstr "" -#: nova/virt/hyperv/livemigrationops.py:162 +#: nova/virt/hyperv/livemigrationops.py:161 #, python-format msgid "compare_cpu called %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:58 +#: nova/virt/hyperv/snapshotops.py:57 #, python-format msgid "Creating snapshot for instance %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:72 +#: nova/virt/hyperv/snapshotops.py:71 #, python-format msgid "Failed to create snapshot for VM %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:84 +#: nova/virt/hyperv/snapshotops.py:83 #, python-format msgid "Getting info for VHD %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:107 +#: nova/virt/hyperv/snapshotops.py:106 #, python-format msgid "Copying VHD %(src_vhd_path)s to %(dest_vhd_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:117 +#: nova/virt/hyperv/snapshotops.py:116 #, python-format msgid "Copying base disk %(src_vhd_path)s to %(dest_base_disk_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:121 +#: nova/virt/hyperv/snapshotops.py:120 #, 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:135 +#: nova/virt/hyperv/snapshotops.py:134 #, python-format msgid "" "Failed to reconnect base disk %(dest_base_disk_path)s and diff disk " "%(dest_vhd_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:140 +#: nova/virt/hyperv/snapshotops.py:139 #, python-format msgid "Merging base disk %(dest_base_disk_path)s and diff disk %(dest_vhd_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:152 +#: nova/virt/hyperv/snapshotops.py:151 #, python-format msgid "" "Failed to merge base disk %(dest_base_disk_path)s and diff disk " "%(dest_vhd_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:165 +#: nova/virt/hyperv/snapshotops.py:164 #, python-format msgid "" "Updating Glance image %(image_id)s with content from merged disk " "%(image_vhd_path)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:170 +#: nova/virt/hyperv/snapshotops.py:169 #, python-format msgid "Snapshot image %(image_id)s updated for VM %(instance_name)s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:173 +#: nova/virt/hyperv/snapshotops.py:172 #, python-format msgid "Removing snapshot %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:182 +#: nova/virt/hyperv/snapshotops.py:181 #, python-format msgid "Failed to remove snapshot for VM %s" msgstr "" -#: nova/virt/hyperv/snapshotops.py:187 +#: nova/virt/hyperv/snapshotops.py:186 #, python-format msgid "Removing folder %s " msgstr "" @@ -5793,11 +5483,11 @@ msgstr "" msgid "Invalid config_drive_format \"%s\"" msgstr "" -#: nova/virt/hyperv/vmops.py:183 nova/virt/libvirt/driver.py:1406 +#: nova/virt/hyperv/vmops.py:183 nova/virt/libvirt/driver.py:1405 msgid "Using config drive" msgstr "" -#: nova/virt/hyperv/vmops.py:194 nova/virt/libvirt/driver.py:1416 +#: nova/virt/hyperv/vmops.py:194 nova/virt/libvirt/driver.py:1415 #, python-format msgid "Creating config drive at %(path)s" msgstr "" @@ -5957,410 +5647,420 @@ msgstr "" msgid "duplicate name found: %s" msgstr "" -#: nova/virt/hyperv/vmutils.py:68 +#: nova/virt/hyperv/vmutils.py:72 #, python-format msgid "" -"WMI job failed: %(ErrorSummaryDescription)s - %(ErrorDescription)s - " -"%(ErrorCode)s" +"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:78 +#, python-format +msgid "WMI job failed with status %(job_state)d. Error details: %(error)s" msgstr "" -#: nova/virt/hyperv/vmutils.py:73 +#: nova/virt/hyperv/vmutils.py:81 #, python-format -msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s " +msgid "WMI job failed with status %(job_state)d. No error description available" msgstr "" -#: nova/virt/hyperv/vmutils.py:80 nova/virt/hyperv/vmutils.py:100 +#: nova/virt/hyperv/vmutils.py:86 +#, python-format +msgid "WMI job succeeded: %(desc)s, Elapsed=%(elap)s" +msgstr "" + +#: nova/virt/hyperv/vmutils.py:93 nova/virt/hyperv/vmutils.py:113 #, python-format msgid "Creating folder %s " msgstr "" -#: nova/virt/hyperv/vmutils.py:98 +#: nova/virt/hyperv/vmutils.py:111 #, python-format msgid "Removing existing folder %s " msgstr "" -#: nova/virt/hyperv/volumeops.py:70 nova/virt/xenapi/vm_utils.py:510 +#: nova/virt/hyperv/volumeops.py:69 nova/virt/xenapi/vm_utils.py:509 #, python-format msgid "block device info: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:98 +#: nova/virt/hyperv/volumeops.py:97 #, python-format msgid "Attach boot from volume failed: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:101 +#: nova/virt/hyperv/volumeops.py:100 #, python-format msgid "Unable to attach boot volume to instance %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:110 nova/virt/xenapi/volumeops.py:114 +#: nova/virt/hyperv/volumeops.py:109 nova/virt/xenapi/volumeops.py:114 #, python-format msgid "Attach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" -#: nova/virt/hyperv/volumeops.py:135 +#: nova/virt/hyperv/volumeops.py:134 #, python-format msgid "Attach volume failed: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:138 nova/virt/xenapi/volumeops.py:190 +#: nova/virt/hyperv/volumeops.py:137 nova/virt/xenapi/volumeops.py:190 #, python-format msgid "Unable to attach volume to instance %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:157 +#: nova/virt/hyperv/volumeops.py:156 #, python-format msgid "Failed to add volume to VM %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:171 +#: nova/virt/hyperv/volumeops.py:170 #, python-format msgid "Detach_volume: %(connection_info)s, %(instance_name)s, %(mountpoint)s" msgstr "" -#: nova/virt/hyperv/volumeops.py:188 +#: nova/virt/hyperv/volumeops.py:187 #, python-format msgid "Mounted disk to detach is: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:189 +#: nova/virt/hyperv/volumeops.py:188 #, python-format msgid "host_resource disk detached is: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:192 +#: nova/virt/hyperv/volumeops.py:191 #, python-format msgid "Physical disk detached is: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:199 +#: nova/virt/hyperv/volumeops.py:198 #, python-format msgid "Failed to remove volume from VM %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:208 nova/virt/libvirt/driver.py:603 +#: nova/virt/hyperv/volumeops.py:207 nova/virt/libvirt/driver.py:602 msgid "Could not determine iscsi initiator name" msgstr "" -#: nova/virt/hyperv/volumeops.py:225 +#: nova/virt/hyperv/volumeops.py:224 #, python-format msgid "device.InitiatorName: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:226 +#: nova/virt/hyperv/volumeops.py:225 #, python-format msgid "device.TargetName: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:227 +#: nova/virt/hyperv/volumeops.py:226 #, python-format msgid "device.ScsiPortNumber: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:228 +#: nova/virt/hyperv/volumeops.py:227 #, python-format msgid "device.ScsiPathId: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:229 +#: nova/virt/hyperv/volumeops.py:228 #, python-format msgid "device.ScsiTargetId): %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:230 +#: nova/virt/hyperv/volumeops.py:229 #, python-format msgid "device.ScsiLun: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:231 +#: nova/virt/hyperv/volumeops.py:230 #, python-format msgid "device.DeviceInterfaceGuid :%s" msgstr "" -#: nova/virt/hyperv/volumeops.py:233 +#: nova/virt/hyperv/volumeops.py:232 #, python-format msgid "device.DeviceInterfaceName: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:235 +#: nova/virt/hyperv/volumeops.py:234 #, python-format msgid "device.LegacyName: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:236 +#: nova/virt/hyperv/volumeops.py:235 #, python-format msgid "device.DeviceType: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:237 +#: nova/virt/hyperv/volumeops.py:236 #, python-format msgid "device.DeviceNumber %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:238 +#: nova/virt/hyperv/volumeops.py:237 #, python-format msgid "device.PartitionNumber :%s" msgstr "" -#: nova/virt/hyperv/volumeops.py:244 nova/virt/hyperv/volumeops.py:263 +#: nova/virt/hyperv/volumeops.py:243 nova/virt/hyperv/volumeops.py:262 #, python-format msgid "Unable to find a mounted disk for target_iqn: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:246 +#: nova/virt/hyperv/volumeops.py:245 #, python-format msgid "Device number : %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:247 +#: nova/virt/hyperv/volumeops.py:246 #, python-format msgid "Target lun : %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:253 nova/virt/hyperv/volumeops.py:260 +#: nova/virt/hyperv/volumeops.py:252 nova/virt/hyperv/volumeops.py:259 #, python-format msgid "Mounted disk is: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:277 +#: nova/virt/hyperv/volumeops.py:276 #, python-format msgid "Drive number to disconnect is: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:284 +#: nova/virt/hyperv/volumeops.py:283 #, python-format msgid "DeviceNumber : %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:289 +#: nova/virt/hyperv/volumeops.py:288 #, python-format msgid "Disk path to parse: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:291 +#: nova/virt/hyperv/volumeops.py:290 #, python-format msgid "start_device_id: %s" msgstr "" -#: nova/virt/hyperv/volumeops.py:293 +#: nova/virt/hyperv/volumeops.py:292 #, python-format msgid "end_device_id: %s" msgstr "" -#: nova/virt/hyperv/volumeutils.py:52 +#: nova/virt/hyperv/volumeutils.py:51 #, python-format msgid "An error has occurred when calling the iscsi initiator: %s" msgstr "" -#: nova/virt/hyperv/volumeutils.py:69 +#: nova/virt/hyperv/volumeutils.py:68 msgid "The ISCSI initiator name can't be found. Choosing the default one" msgstr "" -#: nova/virt/hyperv/volumeutils.py:122 nova/virt/libvirt/driver.py:1467 -#: nova/virt/xenapi/vm_utils.py:503 +#: nova/virt/hyperv/volumeutils.py:121 nova/virt/libvirt/driver.py:1466 +#: nova/virt/xenapi/vm_utils.py:502 #, python-format msgid "block_device_list %s" msgstr "" -#: nova/virt/libvirt/driver.py:332 +#: nova/virt/libvirt/driver.py:331 #, python-format msgid "Nova requires libvirt version %(major)i.%(minor)i.%(micro)i or greater." msgstr "" -#: nova/virt/libvirt/driver.py:338 +#: nova/virt/libvirt/driver.py:337 #, python-format msgid "Connecting to libvirt: %s" msgstr "" -#: nova/virt/libvirt/driver.py:359 +#: nova/virt/libvirt/driver.py:358 msgid "Connection to libvirt broke" msgstr "" -#: nova/virt/libvirt/driver.py:381 nova/virt/libvirt/driver.py:384 +#: nova/virt/libvirt/driver.py:380 nova/virt/libvirt/driver.py:383 #, python-format msgid "Can not handle authentication request for %d credentials" msgstr "" -#: nova/virt/libvirt/driver.py:466 +#: nova/virt/libvirt/driver.py:465 #, python-format msgid "Error from libvirt during destroy. Code=%(errcode)s Error=%(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:480 +#: nova/virt/libvirt/driver.py:479 msgid "During wait destroy, instance disappeared." msgstr "" -#: nova/virt/libvirt/driver.py:485 +#: nova/virt/libvirt/driver.py:484 msgid "Instance destroyed successfully." msgstr "" -#: nova/virt/libvirt/driver.py:507 +#: nova/virt/libvirt/driver.py:506 msgid "Error from libvirt during undefineFlags. Retrying with undefine" msgstr "" -#: nova/virt/libvirt/driver.py:522 +#: nova/virt/libvirt/driver.py:521 #, python-format msgid "Error from libvirt during undefine. Code=%(errcode)s Error=%(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:535 +#: nova/virt/libvirt/driver.py:534 #, python-format msgid "Error from libvirt during unfilter. Code=%(errcode)s Error=%(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:552 +#: nova/virt/libvirt/driver.py:551 #, python-format msgid "Deleting instance files %(target)s" msgstr "" -#: nova/virt/libvirt/driver.py:566 +#: nova/virt/libvirt/driver.py:565 #, python-format msgid "Failed to cleanup directory %(target)s: %(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:726 +#: nova/virt/libvirt/driver.py:725 msgid "During detach_volume, instance disappeared." msgstr "" -#: nova/virt/libvirt/driver.py:736 +#: nova/virt/libvirt/driver.py:735 msgid "attaching LXC block device" msgstr "" -#: nova/virt/libvirt/driver.py:756 +#: nova/virt/libvirt/driver.py:755 msgid "detaching LXC block device" msgstr "" -#: nova/virt/libvirt/driver.py:888 +#: nova/virt/libvirt/driver.py:887 msgid "Instance soft rebooted successfully." msgstr "" -#: nova/virt/libvirt/driver.py:892 +#: nova/virt/libvirt/driver.py:891 msgid "Failed to soft reboot instance." msgstr "" -#: nova/virt/libvirt/driver.py:924 +#: nova/virt/libvirt/driver.py:923 msgid "Instance shutdown successfully." msgstr "" -#: nova/virt/libvirt/driver.py:960 +#: nova/virt/libvirt/driver.py:959 msgid "Instance rebooted successfully." msgstr "" -#: nova/virt/libvirt/driver.py:1090 +#: nova/virt/libvirt/driver.py:1089 msgid "Instance is running" msgstr "" -#: nova/virt/libvirt/driver.py:1097 nova/virt/powervm/operator.py:257 +#: nova/virt/libvirt/driver.py:1096 nova/virt/powervm/operator.py:256 msgid "Instance spawned successfully." msgstr "" -#: nova/virt/libvirt/driver.py:1113 +#: nova/virt/libvirt/driver.py:1112 #, python-format msgid "data: %(data)r, fpath: %(fpath)r" msgstr "" -#: nova/virt/libvirt/driver.py:1159 +#: nova/virt/libvirt/driver.py:1158 msgid "Guest does not have a console available" msgstr "" -#: nova/virt/libvirt/driver.py:1203 +#: nova/virt/libvirt/driver.py:1202 #, python-format msgid "Path '%(path)s' supports direct I/O" msgstr "" -#: nova/virt/libvirt/driver.py:1207 +#: nova/virt/libvirt/driver.py:1206 #, python-format msgid "Path '%(path)s' does not support direct I/O: '%(ex)s'" msgstr "" -#: nova/virt/libvirt/driver.py:1211 nova/virt/libvirt/driver.py:1215 +#: nova/virt/libvirt/driver.py:1210 nova/virt/libvirt/driver.py:1214 #, python-format msgid "Error on '%(path)s' while checking direct I/O: '%(ex)s'" msgstr "" -#: nova/virt/libvirt/driver.py:1281 +#: nova/virt/libvirt/driver.py:1280 msgid "Creating image" msgstr "" -#: nova/virt/libvirt/driver.py:1430 +#: nova/virt/libvirt/driver.py:1429 #, python-format msgid "Injecting %(injection)s into image %(img_id)s" msgstr "" -#: nova/virt/libvirt/driver.py:1440 +#: nova/virt/libvirt/driver.py:1439 #, python-format msgid "Ignoring error injecting data into image %(img_id)s (%(e)s)" msgstr "" -#: nova/virt/libvirt/driver.py:1514 +#: nova/virt/libvirt/driver.py:1513 #, 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:1520 +#: nova/virt/libvirt/driver.py:1519 msgid "Config requested a custom CPU model, but no model name was provided" msgstr "" -#: nova/virt/libvirt/driver.py:1524 +#: nova/virt/libvirt/driver.py:1523 msgid "A CPU model name should not be set when a host CPU model is requested" msgstr "" -#: nova/virt/libvirt/driver.py:1528 +#: nova/virt/libvirt/driver.py:1527 #, python-format msgid "CPU mode '%(mode)s' model '%(model)s' was chosen" msgstr "" -#: nova/virt/libvirt/driver.py:1544 +#: nova/virt/libvirt/driver.py:1543 msgid "" "Passthrough of the host CPU was requested but this libvirt version does " "not support this feature" msgstr "" -#: nova/virt/libvirt/driver.py:1834 +#: nova/virt/libvirt/driver.py:1833 msgid "Starting toXML method" msgstr "" -#: nova/virt/libvirt/driver.py:1838 +#: nova/virt/libvirt/driver.py:1837 msgid "Finished toXML method" msgstr "" -#: nova/virt/libvirt/driver.py:1855 +#: nova/virt/libvirt/driver.py:1854 #, 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:2107 +#: nova/virt/libvirt/driver.py:2106 msgid "libvirt version is too old (does not support getVersion)" msgstr "" -#: nova/virt/libvirt/driver.py:2295 +#: nova/virt/libvirt/driver.py:2294 msgid "Block migration can not be used with shared storage." msgstr "" -#: nova/virt/libvirt/driver.py:2303 +#: nova/virt/libvirt/driver.py:2302 msgid "Live migration can not be used without shared storage." msgstr "" -#: nova/virt/libvirt/driver.py:2338 +#: nova/virt/libvirt/driver.py:2337 #, 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:2363 +#: nova/virt/libvirt/driver.py:2362 #, python-format msgid "" "Instance launched has CPU info:\n" "%s" msgstr "" -#: nova/virt/libvirt/driver.py:2375 +#: nova/virt/libvirt/driver.py:2374 #, python-format msgid "" "CPU doesn't have compatibility.\n" @@ -6370,212 +6070,212 @@ msgid "" "Refer to %(u)s" msgstr "" -#: nova/virt/libvirt/driver.py:2392 +#: nova/virt/libvirt/driver.py:2391 #, 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:2440 +#: nova/virt/libvirt/driver.py:2439 #, python-format msgid "The firewall filter for %s does not exist" msgstr "" -#: nova/virt/libvirt/driver.py:2510 +#: nova/virt/libvirt/driver.py:2509 #, python-format msgid "Live Migration failure: %(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:2554 +#: nova/virt/libvirt/driver.py:2553 #, python-format msgid "plug_vifs() failed %(cnt)d.Retry up to %(max_retry)d for %(hostname)s." msgstr "" -#: nova/virt/libvirt/driver.py:2681 +#: nova/virt/libvirt/driver.py:2680 #, python-format msgid "skipping %(path)s since it looks like volume" msgstr "" -#: nova/virt/libvirt/driver.py:2730 +#: nova/virt/libvirt/driver.py:2729 #, python-format msgid "Getting disk size of %(i_name)s: %(e)s" msgstr "" -#: nova/virt/libvirt/driver.py:2792 +#: nova/virt/libvirt/driver.py:2791 msgid "Starting migrate_disk_and_power_off" msgstr "" -#: nova/virt/libvirt/driver.py:2851 +#: nova/virt/libvirt/driver.py:2850 msgid "Instance running successfully." msgstr "" -#: nova/virt/libvirt/driver.py:2858 +#: nova/virt/libvirt/driver.py:2857 msgid "Starting finish_migration" msgstr "" -#: nova/virt/libvirt/driver.py:2909 +#: nova/virt/libvirt/driver.py:2908 msgid "Starting finish_revert_migration" msgstr "" -#: nova/virt/libvirt/firewall.py:34 +#: nova/virt/libvirt/firewall.py:33 msgid "" "Libvirt module could not be loaded. NWFilterFirewall will not work " "correctly." msgstr "" -#: nova/virt/libvirt/firewall.py:103 +#: nova/virt/libvirt/firewall.py:102 msgid "Called setup_basic_filtering in nwfilter" msgstr "" -#: nova/virt/libvirt/firewall.py:111 +#: nova/virt/libvirt/firewall.py:110 msgid "Ensuring static filters" msgstr "" -#: nova/virt/libvirt/firewall.py:192 +#: nova/virt/libvirt/firewall.py:191 #, python-format msgid "The nwfilter(%(instance_filter_name)s) is not found." msgstr "" -#: nova/virt/libvirt/firewall.py:215 +#: nova/virt/libvirt/firewall.py:214 #, python-format msgid "The nwfilter(%(instance_filter_name)s) for%(name)s is not found." msgstr "" -#: nova/virt/libvirt/firewall.py:231 +#: nova/virt/libvirt/firewall.py:230 msgid "iptables firewall: Setup Basic Filtering" msgstr "" -#: nova/virt/libvirt/imagebackend.py:214 +#: nova/virt/libvirt/imagebackend.py:213 msgid "You should specify libvirt_images_volume_group flag to use LVM images." msgstr "" -#: nova/virt/libvirt/imagebackend.py:277 +#: nova/virt/libvirt/imagebackend.py:276 #, python-format msgid "Unknown image_type=%s" msgstr "" -#: nova/virt/libvirt/imagecache.py:165 +#: nova/virt/libvirt/imagecache.py:164 #, python-format msgid "%s is a valid instance name" msgstr "" -#: nova/virt/libvirt/imagecache.py:168 +#: nova/virt/libvirt/imagecache.py:167 #, python-format msgid "%s has a disk file" msgstr "" -#: nova/virt/libvirt/imagecache.py:170 +#: nova/virt/libvirt/imagecache.py:169 #, python-format msgid "Instance %(instance)s is backed by %(backing)s" msgstr "" -#: nova/virt/libvirt/imagecache.py:183 +#: nova/virt/libvirt/imagecache.py:182 #, 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:238 +#: nova/virt/libvirt/imagecache.py:237 #, python-format msgid "%(id)s (%(base_file)s): image verification failed" msgstr "" -#: nova/virt/libvirt/imagecache.py:248 +#: nova/virt/libvirt/imagecache.py:247 #, python-format msgid "%(id)s (%(base_file)s): image verification skipped, no hash stored" msgstr "" -#: nova/virt/libvirt/imagecache.py:267 +#: nova/virt/libvirt/imagecache.py:266 #, python-format msgid "Cannot remove %(base_file)s, it does not exist" msgstr "" -#: nova/virt/libvirt/imagecache.py:279 +#: nova/virt/libvirt/imagecache.py:278 #, python-format msgid "Base file too young to remove: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:282 +#: nova/virt/libvirt/imagecache.py:281 #, python-format msgid "Removing base file: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:289 +#: nova/virt/libvirt/imagecache.py:288 #, python-format msgid "Failed to remove %(base_file)s, error was %(error)s" msgstr "" -#: nova/virt/libvirt/imagecache.py:300 +#: nova/virt/libvirt/imagecache.py:299 #, python-format msgid "%(id)s (%(base_file)s): checking" msgstr "" -#: nova/virt/libvirt/imagecache.py:319 +#: nova/virt/libvirt/imagecache.py:321 #, python-format msgid "" "%(id)s (%(base_file)s): in use: on this node %(local)d local, %(remote)d " "on other nodes" msgstr "" -#: nova/virt/libvirt/imagecache.py:331 +#: nova/virt/libvirt/imagecache.py:333 #, python-format msgid "" "%(id)s (%(base_file)s): warning -- an absent base file is in use! " "instances: %(instance_list)s" msgstr "" -#: nova/virt/libvirt/imagecache.py:339 +#: nova/virt/libvirt/imagecache.py:341 #, python-format msgid "%(id)s (%(base_file)s): in use on (%(remote)d on other nodes)" msgstr "" -#: nova/virt/libvirt/imagecache.py:349 +#: nova/virt/libvirt/imagecache.py:351 #, python-format msgid "%(id)s (%(base_file)s): image is not in use" msgstr "" -#: nova/virt/libvirt/imagecache.py:355 +#: nova/virt/libvirt/imagecache.py:357 #, python-format msgid "%(id)s (%(base_file)s): image is in use" msgstr "" -#: nova/virt/libvirt/imagecache.py:378 +#: nova/virt/libvirt/imagecache.py:380 #, python-format msgid "Skipping verification, no base directory at %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:382 +#: nova/virt/libvirt/imagecache.py:384 msgid "Verify base images" msgstr "" -#: nova/virt/libvirt/imagecache.py:389 +#: nova/virt/libvirt/imagecache.py:391 #, python-format msgid "Image id %(id)s yields fingerprint %(fingerprint)s" msgstr "" -#: nova/virt/libvirt/imagecache.py:407 +#: nova/virt/libvirt/imagecache.py:409 #, python-format msgid "Unknown base file: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:412 +#: nova/virt/libvirt/imagecache.py:414 #, python-format msgid "Active base files: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:415 +#: nova/virt/libvirt/imagecache.py:417 #, python-format msgid "Corrupt base files: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:419 +#: nova/virt/libvirt/imagecache.py:421 #, python-format msgid "Removable base files: %s" msgstr "" -#: nova/virt/libvirt/imagecache.py:427 +#: nova/virt/libvirt/imagecache.py:429 msgid "Verification complete" msgstr "" @@ -6584,14 +6284,14 @@ msgstr "" msgid "LVM snapshots not implemented" msgstr "" -#: nova/virt/libvirt/utils.py:133 +#: nova/virt/libvirt/utils.py:132 #, 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:142 +#: nova/virt/libvirt/utils.py:141 #, python-format msgid "" "Volume group %(vg)s will not be able to hold sparse volume %(lv)s. " @@ -6599,72 +6299,72 @@ msgid "" "%(free_space)db." msgstr "" -#: nova/virt/libvirt/utils.py:189 +#: nova/virt/libvirt/utils.py:188 #, python-format msgid "Path %s must be LVM logical volume" msgstr "" -#: nova/virt/libvirt/utils.py:408 +#: nova/virt/libvirt/utils.py:407 msgid "Can't retrieve root device path from instance libvirt configuration" msgstr "" -#: nova/virt/libvirt/utils.py:497 +#: nova/virt/libvirt/utils.py:496 #, python-format msgid "Reading image info file: %s" msgstr "" -#: nova/virt/libvirt/utils.py:501 +#: nova/virt/libvirt/utils.py:500 #, python-format msgid "Read: %s" msgstr "" -#: nova/virt/libvirt/utils.py:507 +#: nova/virt/libvirt/utils.py:506 #, python-format msgid "Error reading image info file %(filename)s: %(error)s" msgstr "" -#: nova/virt/libvirt/utils.py:531 +#: nova/virt/libvirt/utils.py:530 #, python-format msgid "Writing image info file: %s" msgstr "" -#: nova/virt/libvirt/utils.py:532 +#: nova/virt/libvirt/utils.py:531 #, python-format msgid "Wrote: %s" msgstr "" -#: nova/virt/libvirt/vif.py:96 +#: nova/virt/libvirt/vif.py:95 #, python-format msgid "Ensuring vlan %(vlan)s and bridge %(bridge)s" msgstr "" -#: nova/virt/libvirt/vif.py:106 +#: nova/virt/libvirt/vif.py:105 #, python-format msgid "Ensuring bridge %s" msgstr "" -#: nova/virt/libvirt/vif.py:182 nova/virt/libvirt/vif.py:248 +#: nova/virt/libvirt/vif.py:181 nova/virt/libvirt/vif.py:247 msgid "Failed while unplugging vif" msgstr "" -#: nova/virt/libvirt/volume.py:190 +#: nova/virt/libvirt/volume.py:189 #, python-format msgid "iSCSI device not found at %s" msgstr "" -#: nova/virt/libvirt/volume.py:193 +#: nova/virt/libvirt/volume.py:192 #, python-format msgid "" "ISCSI volume not yet found at: %(mount_device)s. Will rescan & retry. " "Try number: %(tries)s" msgstr "" -#: nova/virt/libvirt/volume.py:205 +#: nova/virt/libvirt/volume.py:204 #, python-format msgid "Found iSCSI node %(mount_device)s (after %(tries)s rescans)" msgstr "" -#: nova/virt/libvirt/volume_nfs.py:82 +#: nova/virt/libvirt/volume_nfs.py:81 #, python-format msgid "%s is already mounted" msgstr "" @@ -6727,134 +6427,134 @@ msgstr "" msgid "PowerVM LPAR instance '%(instance_name)s' cleanup failed" msgstr "" -#: nova/virt/powervm/operator.py:94 +#: nova/virt/powervm/operator.py:93 #, python-format msgid "LPAR instance '%s' not found" msgstr "" -#: nova/virt/powervm/operator.py:178 +#: nova/virt/powervm/operator.py:177 msgid "Not enough free memory in the host" msgstr "" -#: nova/virt/powervm/operator.py:188 +#: nova/virt/powervm/operator.py:187 msgid "Insufficient available CPU on PowerVM" msgstr "" -#: nova/virt/powervm/operator.py:212 +#: nova/virt/powervm/operator.py:211 #, python-format msgid "Creating LPAR instance '%s'" msgstr "" -#: nova/virt/powervm/operator.py:215 +#: nova/virt/powervm/operator.py:214 #, python-format msgid "LPAR instance '%s' creation failed" msgstr "" -#: nova/virt/powervm/operator.py:225 +#: nova/virt/powervm/operator.py:224 #, python-format msgid "Fetching image '%s' from glance" msgstr "" -#: nova/virt/powervm/operator.py:229 +#: nova/virt/powervm/operator.py:228 #, python-format msgid "Copying image '%s' to IVM" msgstr "" -#: nova/virt/powervm/operator.py:234 +#: nova/virt/powervm/operator.py:233 msgid "Creating logical volume" msgstr "" -#: nova/virt/powervm/operator.py:239 +#: nova/virt/powervm/operator.py:238 #, python-format msgid "Copying image to the device '%s'" msgstr "" -#: nova/virt/powervm/operator.py:242 +#: nova/virt/powervm/operator.py:241 #, python-format msgid "PowerVM image creation failed: %s" msgstr "" -#: nova/virt/powervm/operator.py:248 +#: nova/virt/powervm/operator.py:247 #, python-format msgid "Activating the LPAR instance '%s'" msgstr "" -#: nova/virt/powervm/operator.py:262 +#: nova/virt/powervm/operator.py:261 #, python-format msgid "Instance '%s' failed to boot" msgstr "" -#: nova/virt/powervm/operator.py:274 +#: nova/virt/powervm/operator.py:273 msgid "Error while attempting to clean up failed instance launch." msgstr "" -#: nova/virt/powervm/operator.py:285 +#: nova/virt/powervm/operator.py:284 #, python-format msgid "During destroy, LPAR instance '%s' was not found on PowerVM system." msgstr "" -#: nova/virt/powervm/operator.py:294 +#: nova/virt/powervm/operator.py:293 #, python-format msgid "Shutting down the instance '%s'" msgstr "" -#: nova/virt/powervm/operator.py:298 +#: nova/virt/powervm/operator.py:297 #, python-format msgid "Removing the logical volume '%s'" msgstr "" -#: nova/virt/powervm/operator.py:301 +#: nova/virt/powervm/operator.py:300 #, python-format msgid "Deleting the LPAR instance '%s'" msgstr "" -#: nova/virt/powervm/operator.py:304 +#: nova/virt/powervm/operator.py:303 msgid "PowerVM instance cleanup failed" msgstr "" -#: nova/virt/powervm/operator.py:505 +#: nova/virt/powervm/operator.py:504 msgid "Could not create logical volume. No space left on any volume group." msgstr "" -#: nova/virt/powervm/operator.py:564 +#: nova/virt/powervm/operator.py:563 msgid "Unable to get checksum" msgstr "" -#: nova/virt/powervm/operator.py:567 +#: nova/virt/powervm/operator.py:566 msgid "Image checksums do not match" msgstr "" -#: nova/virt/powervm/operator.py:592 +#: nova/virt/powervm/operator.py:591 msgid "Uncompressed image file not found" msgstr "" -#: nova/virt/vmwareapi/driver.py:112 +#: nova/virt/vmwareapi/driver.py:111 msgid "" "Must specify vmwareapi_host_ip,vmwareapi_host_username and " "vmwareapi_host_password to usecompute_driver=vmwareapi.VMWareESXDriver" msgstr "" -#: nova/virt/vmwareapi/driver.py:276 +#: nova/virt/vmwareapi/driver.py:275 #, python-format msgid "In vmwareapi:_create_session, got this exception: %s" msgstr "" -#: nova/virt/vmwareapi/driver.py:359 +#: nova/virt/vmwareapi/driver.py:358 #, python-format msgid "In vmwareapi:_call_method, got this exception: %s" msgstr "" -#: nova/virt/vmwareapi/driver.py:394 +#: nova/virt/vmwareapi/driver.py:393 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: success" msgstr "" -#: nova/virt/vmwareapi/driver.py:399 +#: nova/virt/vmwareapi/driver.py:398 #, python-format msgid "Task [%(task_name)s] %(task_ref)s status: error %(error_info)s" msgstr "" -#: nova/virt/vmwareapi/driver.py:403 +#: nova/virt/vmwareapi/driver.py:402 #, python-format msgid "In vmwareapi:_poll_task, Got this error %s" msgstr "" @@ -6931,274 +6631,274 @@ msgstr "" msgid "Exception during HTTP connection close in VMWareHTTpWrite. Exception is %s" msgstr "" -#: nova/virt/vmwareapi/vim.py:85 +#: nova/virt/vmwareapi/vim.py:84 msgid "Unable to import suds." msgstr "" -#: nova/virt/vmwareapi/vim.py:91 +#: nova/virt/vmwareapi/vim.py:90 msgid "Must specify vmwareapi_wsdl_loc" msgstr "" -#: nova/virt/vmwareapi/vim.py:146 +#: nova/virt/vmwareapi/vim.py:145 #, python-format msgid "No such SOAP method '%s' provided by VI SDK" msgstr "" -#: nova/virt/vmwareapi/vim.py:151 +#: nova/virt/vmwareapi/vim.py:150 #, python-format msgid "httplib error in %s: " msgstr "" -#: nova/virt/vmwareapi/vim.py:158 +#: nova/virt/vmwareapi/vim.py:157 #, python-format msgid "Socket error in %s: " msgstr "" -#: nova/virt/vmwareapi/vim.py:163 +#: nova/virt/vmwareapi/vim.py:162 #, python-format msgid "Type error in %s: " msgstr "" -#: nova/virt/vmwareapi/vim.py:167 +#: nova/virt/vmwareapi/vim.py:166 #, python-format msgid "Exception in %s " msgstr "" -#: nova/virt/vmwareapi/vmops.py:67 +#: nova/virt/vmwareapi/vmops.py:66 msgid "Getting list of instances" msgstr "" -#: nova/virt/vmwareapi/vmops.py:83 +#: nova/virt/vmwareapi/vmops.py:82 #, python-format msgid "Got total of %s instances" msgstr "" -#: nova/virt/vmwareapi/vmops.py:127 +#: nova/virt/vmwareapi/vmops.py:126 msgid "Couldn't get a local Datastore reference" msgstr "" -#: nova/virt/vmwareapi/vmops.py:197 +#: nova/virt/vmwareapi/vmops.py:196 msgid "Creating VM on the ESX host" msgstr "" -#: nova/virt/vmwareapi/vmops.py:205 +#: nova/virt/vmwareapi/vmops.py:204 msgid "Created VM on the ESX host" msgstr "" -#: nova/virt/vmwareapi/vmops.py:233 +#: nova/virt/vmwareapi/vmops.py:232 #, 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:251 +#: nova/virt/vmwareapi/vmops.py:250 #, python-format msgid "" "Created Virtual Disk of size %(vmdk_file_size_in_kb)s KB on the ESX host " "local store %(data_store_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:261 +#: nova/virt/vmwareapi/vmops.py:260 #, python-format msgid "" "Deleting the file %(flat_uploaded_vmdk_path)s on the ESX host localstore " "%(data_store_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:274 +#: nova/virt/vmwareapi/vmops.py:273 #, python-format msgid "" "Deleted the file %(flat_uploaded_vmdk_path)s on the ESX host local store " "%(data_store_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:286 +#: nova/virt/vmwareapi/vmops.py:285 #, 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:302 +#: nova/virt/vmwareapi/vmops.py:301 #, python-format msgid "" "Downloaded image file data %(image_ref)s to the ESX data store " "%(data_store_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:320 +#: nova/virt/vmwareapi/vmops.py:319 msgid "Reconfiguring VM instance to attach the image disk" msgstr "" -#: nova/virt/vmwareapi/vmops.py:327 +#: nova/virt/vmwareapi/vmops.py:326 msgid "Reconfigured VM instance to attach the image disk" msgstr "" -#: nova/virt/vmwareapi/vmops.py:334 +#: nova/virt/vmwareapi/vmops.py:333 msgid "Powering on the VM instance" msgstr "" -#: nova/virt/vmwareapi/vmops.py:340 +#: nova/virt/vmwareapi/vmops.py:339 msgid "Powered on the VM instance" msgstr "" -#: nova/virt/vmwareapi/vmops.py:386 +#: nova/virt/vmwareapi/vmops.py:385 msgid "Creating Snapshot of the VM instance" msgstr "" -#: nova/virt/vmwareapi/vmops.py:396 +#: nova/virt/vmwareapi/vmops.py:395 msgid "Created Snapshot of the VM instance" msgstr "" -#: nova/virt/vmwareapi/vmops.py:439 +#: nova/virt/vmwareapi/vmops.py:438 msgid "Copying disk data before snapshot of the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:452 +#: nova/virt/vmwareapi/vmops.py:451 msgid "Copied disk data before snapshot of the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:461 +#: nova/virt/vmwareapi/vmops.py:460 #, python-format msgid "Uploading image %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:475 +#: nova/virt/vmwareapi/vmops.py:474 #, python-format msgid "Uploaded image %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:486 +#: nova/virt/vmwareapi/vmops.py:485 #, python-format msgid "Deleting temporary vmdk file %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:495 +#: nova/virt/vmwareapi/vmops.py:494 #, python-format msgid "Deleted temporary vmdk file %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:527 +#: nova/virt/vmwareapi/vmops.py:526 msgid "instance is not powered on" msgstr "" -#: nova/virt/vmwareapi/vmops.py:534 +#: nova/virt/vmwareapi/vmops.py:533 msgid "Rebooting guest OS of VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:537 +#: nova/virt/vmwareapi/vmops.py:536 msgid "Rebooted guest OS of VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:539 +#: nova/virt/vmwareapi/vmops.py:538 msgid "Doing hard reboot of VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:543 +#: nova/virt/vmwareapi/vmops.py:542 msgid "Did hard reboot of VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:555 +#: nova/virt/vmwareapi/vmops.py:554 msgid "instance not present" msgstr "" -#: nova/virt/vmwareapi/vmops.py:574 +#: nova/virt/vmwareapi/vmops.py:573 msgid "Powering off the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:579 +#: nova/virt/vmwareapi/vmops.py:578 msgid "Powered off the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:583 +#: nova/virt/vmwareapi/vmops.py:582 msgid "Unregistering the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:586 +#: nova/virt/vmwareapi/vmops.py:585 msgid "Unregistered the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:588 +#: nova/virt/vmwareapi/vmops.py:587 #, python-format msgid "" "In vmwareapi:vmops:destroy, got this exception while un-registering the " "VM: %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:600 +#: nova/virt/vmwareapi/vmops.py:599 #, python-format msgid "Deleting contents of the VM from datastore %(datastore_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:610 +#: nova/virt/vmwareapi/vmops.py:609 #, python-format msgid "Deleted contents of the VM from datastore %(datastore_name)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:615 +#: nova/virt/vmwareapi/vmops.py:614 #, 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:624 +#: nova/virt/vmwareapi/vmops.py:623 msgid "pause not supported for vmwareapi" msgstr "" -#: nova/virt/vmwareapi/vmops.py:628 +#: nova/virt/vmwareapi/vmops.py:627 msgid "unpause not supported for vmwareapi" msgstr "" -#: nova/virt/vmwareapi/vmops.py:642 +#: nova/virt/vmwareapi/vmops.py:641 msgid "Suspending the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:646 +#: nova/virt/vmwareapi/vmops.py:645 msgid "Suspended the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:649 +#: nova/virt/vmwareapi/vmops.py:648 msgid "instance is powered off and can not be suspended." msgstr "" -#: nova/virt/vmwareapi/vmops.py:652 +#: nova/virt/vmwareapi/vmops.py:651 msgid "VM was already in suspended state. So returning without doing anything" msgstr "" -#: nova/virt/vmwareapi/vmops.py:665 +#: nova/virt/vmwareapi/vmops.py:664 msgid "Resuming the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:670 +#: nova/virt/vmwareapi/vmops.py:669 msgid "Resumed the VM" msgstr "" -#: nova/virt/vmwareapi/vmops.py:672 +#: nova/virt/vmwareapi/vmops.py:671 msgid "instance is not in a suspended state" msgstr "" -#: nova/virt/vmwareapi/vmops.py:708 +#: nova/virt/vmwareapi/vmops.py:707 msgid "get_diagnostics not implemented for vmwareapi" msgstr "" -#: nova/virt/vmwareapi/vmops.py:766 +#: nova/virt/vmwareapi/vmops.py:765 #, python-format msgid "Reconfiguring VM instance to set the machine id with ip - %(ip_addr)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:774 +#: nova/virt/vmwareapi/vmops.py:773 #, python-format msgid "Reconfigured VM instance to set the machine id with ip - %(ip_addr)s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:811 +#: nova/virt/vmwareapi/vmops.py:810 #, python-format msgid "Creating directory with path %s" msgstr "" -#: nova/virt/vmwareapi/vmops.py:815 +#: nova/virt/vmwareapi/vmops.py:814 #, python-format msgid "Created directory with path %s" msgstr "" @@ -7233,136 +6933,136 @@ msgstr "" msgid "Got image size of %(size)s for the image %(image)s" msgstr "" -#: nova/virt/xenapi/agent.py:86 nova/virt/xenapi/vmops.py:1494 +#: nova/virt/xenapi/agent.py:85 nova/virt/xenapi/vmops.py:1493 #, python-format msgid "TIMEOUT: The call to %(method)s timed out. args=%(args)r" msgstr "" -#: nova/virt/xenapi/agent.py:90 nova/virt/xenapi/vmops.py:1498 +#: nova/virt/xenapi/agent.py:89 nova/virt/xenapi/vmops.py:1497 #, 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:95 nova/virt/xenapi/vmops.py:1503 +#: nova/virt/xenapi/agent.py:94 nova/virt/xenapi/vmops.py:1502 #, python-format msgid "The call to %(method)s returned an error: %(e)s. args=%(args)r" msgstr "" -#: nova/virt/xenapi/agent.py:105 +#: nova/virt/xenapi/agent.py:104 #, 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:115 +#: nova/virt/xenapi/agent.py:114 #, python-format msgid "Failed to query agent version: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:133 +#: nova/virt/xenapi/agent.py:132 msgid "Querying agent version" msgstr "" -#: nova/virt/xenapi/agent.py:147 +#: nova/virt/xenapi/agent.py:146 msgid "Reached maximum time attempting to query agent version" msgstr "" -#: nova/virt/xenapi/agent.py:155 +#: nova/virt/xenapi/agent.py:154 #, python-format msgid "Updating agent to %s" msgstr "" -#: nova/virt/xenapi/agent.py:163 +#: nova/virt/xenapi/agent.py:162 #, python-format msgid "Failed to update agent: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:177 +#: nova/virt/xenapi/agent.py:176 msgid "Setting admin password" msgstr "" -#: nova/virt/xenapi/agent.py:188 +#: nova/virt/xenapi/agent.py:187 #, python-format msgid "Failed to exchange keys: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:208 +#: nova/virt/xenapi/agent.py:207 #, python-format msgid "Failed to update password: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:215 +#: nova/virt/xenapi/agent.py:214 #, python-format msgid "Injecting file path: %r" msgstr "" -#: nova/virt/xenapi/agent.py:228 +#: nova/virt/xenapi/agent.py:227 #, python-format msgid "Failed to inject file: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:235 +#: nova/virt/xenapi/agent.py:234 msgid "Resetting network" msgstr "" -#: nova/virt/xenapi/agent.py:241 +#: nova/virt/xenapi/agent.py:240 #, python-format msgid "Failed to reset network: %(resp)r" msgstr "" -#: nova/virt/xenapi/agent.py:264 +#: nova/virt/xenapi/agent.py:263 msgid "" "XenServer tools installed in this image are capable of network injection." " Networking files will not bemanipulated" msgstr "" -#: nova/virt/xenapi/agent.py:272 +#: nova/virt/xenapi/agent.py:271 msgid "" "XenServer tools are present in this image but are not capable of network " "injection" msgstr "" -#: nova/virt/xenapi/agent.py:276 +#: nova/virt/xenapi/agent.py:275 msgid "XenServer tools are not installed in this image" msgstr "" -#: nova/virt/xenapi/agent.py:328 +#: nova/virt/xenapi/agent.py:327 #, python-format msgid "OpenSSL error: %s" msgstr "" -#: nova/virt/xenapi/driver.py:135 +#: 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:162 +#: nova/virt/xenapi/driver.py:161 msgid "Failure while cleaning up attached VDIs" msgstr "" -#: nova/virt/xenapi/driver.py:360 +#: nova/virt/xenapi/driver.py:359 #, python-format msgid "Could not determine key: %s" msgstr "" -#: nova/virt/xenapi/driver.py:572 +#: nova/virt/xenapi/driver.py:571 msgid "Host startup on XenServer is not supported." msgstr "" -#: nova/virt/xenapi/driver.py:624 +#: nova/virt/xenapi/driver.py:623 msgid "Unable to log in to XenAPI (is the Dom0 disk full?)" msgstr "" -#: nova/virt/xenapi/driver.py:664 +#: nova/virt/xenapi/driver.py:663 msgid "Host is member of a pool, but DB says otherwise" msgstr "" -#: nova/virt/xenapi/driver.py:748 nova/virt/xenapi/driver.py:762 +#: nova/virt/xenapi/driver.py:747 nova/virt/xenapi/driver.py:761 #, python-format msgid "Got exception: %s" msgstr "" @@ -7445,776 +7145,776 @@ msgstr "" msgid "Found no network for bridge %s" msgstr "" -#: nova/virt/xenapi/pool.py:78 +#: nova/virt/xenapi/pool.py:77 #, python-format msgid "" "Aggregate %(aggregate_id)s: unrecoverable state during operation on " "%(host)s" msgstr "" -#: nova/virt/xenapi/pool.py:173 +#: nova/virt/xenapi/pool.py:172 #, python-format msgid "Unable to eject %(host)s from the pool; pool not empty" msgstr "" -#: nova/virt/xenapi/pool.py:190 +#: nova/virt/xenapi/pool.py:189 #, python-format msgid "Unable to eject %(host)s from the pool; No master found" msgstr "" -#: nova/virt/xenapi/pool.py:207 +#: nova/virt/xenapi/pool.py:206 #, python-format msgid "Pool-Join failed: %(e)s" msgstr "" -#: nova/virt/xenapi/pool.py:210 +#: nova/virt/xenapi/pool.py:209 #, python-format msgid "Unable to join %(host)s in the pool" msgstr "" -#: nova/virt/xenapi/pool.py:226 +#: nova/virt/xenapi/pool.py:225 #, python-format msgid "Pool-eject failed: %(e)s" msgstr "" -#: nova/virt/xenapi/pool.py:238 +#: nova/virt/xenapi/pool.py:237 #, python-format msgid "Unable to set up pool: %(e)s." msgstr "" -#: nova/virt/xenapi/pool.py:249 +#: nova/virt/xenapi/pool.py:248 #, python-format msgid "Pool-set_name_label failed: %(e)s" msgstr "" -#: nova/virt/xenapi/vif.py:105 +#: nova/virt/xenapi/vif.py:104 #, python-format msgid "Found no PIF for device %s" msgstr "" -#: nova/virt/xenapi/vif.py:124 +#: nova/virt/xenapi/vif.py:123 #, 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:264 +#: nova/virt/xenapi/vm_utils.py:263 msgid "Created VM" msgstr "" -#: nova/virt/xenapi/vm_utils.py:276 +#: nova/virt/xenapi/vm_utils.py:275 msgid "VM destroyed" msgstr "" -#: nova/virt/xenapi/vm_utils.py:281 nova/virt/xenapi/vm_utils.py:296 +#: nova/virt/xenapi/vm_utils.py:280 nova/virt/xenapi/vm_utils.py:295 msgid "VM already halted, skipping shutdown..." msgstr "" -#: nova/virt/xenapi/vm_utils.py:285 +#: nova/virt/xenapi/vm_utils.py:284 msgid "Shutting down VM (cleanly)" msgstr "" -#: nova/virt/xenapi/vm_utils.py:300 +#: nova/virt/xenapi/vm_utils.py:299 msgid "Shutting down VM (hard)" msgstr "" -#: nova/virt/xenapi/vm_utils.py:339 +#: nova/virt/xenapi/vm_utils.py:338 #, python-format msgid "VBD not found in instance %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:356 +#: nova/virt/xenapi/vm_utils.py:355 #, python-format msgid "VBD %s already detached" msgstr "" -#: nova/virt/xenapi/vm_utils.py:359 +#: nova/virt/xenapi/vm_utils.py:358 #, python-format msgid "VBD %(vbd_ref)s detach rejected, attempt %(num_attempt)d/%(max_attempts)d" msgstr "" -#: nova/virt/xenapi/vm_utils.py:364 +#: nova/virt/xenapi/vm_utils.py:363 #, python-format msgid "Unable to unplug VBD %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:369 +#: nova/virt/xenapi/vm_utils.py:368 #, python-format msgid "Reached maximum number of retries trying to unplug VBD %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:380 +#: nova/virt/xenapi/vm_utils.py:379 #, python-format msgid "Unable to destroy VBD %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:399 +#: nova/virt/xenapi/vm_utils.py:398 #, 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:402 +#: nova/virt/xenapi/vm_utils.py:401 #, python-format msgid "Created VBD %(vbd_ref)s for VM %(vm_ref)s, VDI %(vdi_ref)s." msgstr "" -#: nova/virt/xenapi/vm_utils.py:418 +#: nova/virt/xenapi/vm_utils.py:417 #, python-format msgid "Unable to destroy VDI %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:450 +#: nova/virt/xenapi/vm_utils.py:449 #, 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:481 +#: nova/virt/xenapi/vm_utils.py:480 msgid "SR not present and could not be introduced" msgstr "" -#: nova/virt/xenapi/vm_utils.py:582 +#: nova/virt/xenapi/vm_utils.py:581 #, python-format msgid "Cloned VDI %(vdi_ref)s from VDI %(vdi_to_clone_ref)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:602 +#: nova/virt/xenapi/vm_utils.py:601 #, python-format msgid "No primary VDI found for %(vm_ref)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:611 +#: nova/virt/xenapi/vm_utils.py:610 msgid "Starting snapshot for VM" msgstr "" -#: nova/virt/xenapi/vm_utils.py:659 +#: nova/virt/xenapi/vm_utils.py:658 #, python-format msgid "Destroying cached VDI '%(vdi_uuid)s'" msgstr "" -#: nova/virt/xenapi/vm_utils.py:717 +#: nova/virt/xenapi/vm_utils.py:716 #, python-format msgid "Asking xapi to upload %(vdi_uuids)s as ID %(image_id)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:903 +#: nova/virt/xenapi/vm_utils.py:902 #, 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:959 +#: nova/virt/xenapi/vm_utils.py:958 #, python-format msgid "Unrecognized cache_images value '%s', defaulting to True" msgstr "" -#: nova/virt/xenapi/vm_utils.py:993 +#: nova/virt/xenapi/vm_utils.py:992 #, python-format msgid "Fetched VDIs of type '%(vdi_type)s' with UUID '%(vdi_uuid)s'" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1005 +#: nova/virt/xenapi/vm_utils.py:1004 #, 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:1018 +#: nova/virt/xenapi/vm_utils.py:1017 #, python-format msgid "download_vhd failed: %r" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1052 +#: nova/virt/xenapi/vm_utils.py:1051 #, python-format msgid "Invalid value '%s' for xenapi_torrent_images" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1063 +#: nova/virt/xenapi/vm_utils.py:1062 #, python-format msgid "Asking xapi to fetch vhd image %(image_id)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1127 +#: nova/virt/xenapi/vm_utils.py:1126 #, python-format msgid "vdi_uuid=%(cur_vdi_uuid)s vdi_size_bytes=%(vdi_size_bytes)d" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1143 +#: nova/virt/xenapi/vm_utils.py:1142 #, python-format msgid "image_size_bytes=%(size_bytes)d, allowed_size_bytes=%(allowed_size_bytes)d" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1147 +#: nova/virt/xenapi/vm_utils.py:1146 #, python-format msgid "" "Image size %(size_bytes)d exceeded instance_type allowed size " "%(allowed_size_bytes)d" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1169 +#: nova/virt/xenapi/vm_utils.py:1168 #, python-format msgid "Fetching image %(image_id)s, type %(image_type_str)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1182 +#: nova/virt/xenapi/vm_utils.py:1181 #, python-format msgid "Size for image %(image_id)s: %(virtual_size)d" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1191 +#: nova/virt/xenapi/vm_utils.py:1190 #, 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:1210 +#: nova/virt/xenapi/vm_utils.py:1209 #, python-format msgid "Copying VDI %s to /boot/guest on dom0" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1224 +#: nova/virt/xenapi/vm_utils.py:1223 #, python-format msgid "Kernel/Ramdisk VDI %s destroyed" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1233 +#: nova/virt/xenapi/vm_utils.py:1232 msgid "Failed to fetch glance image" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1271 +#: nova/virt/xenapi/vm_utils.py:1270 #, python-format msgid "Detected %(image_type_str)s format for image %(image_ref)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1292 +#: nova/virt/xenapi/vm_utils.py:1291 #, python-format msgid "Looking up vdi %s for PV kernel" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1310 +#: nova/virt/xenapi/vm_utils.py:1309 #, python-format msgid "Unknown image format %(disk_image_type)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1341 +#: nova/virt/xenapi/vm_utils.py:1340 #, python-format msgid "VDI %s is still available" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1437 +#: nova/virt/xenapi/vm_utils.py:1436 #, python-format msgid "Unable to parse rrd of %(vm_uuid)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1464 +#: nova/virt/xenapi/vm_utils.py:1463 #, python-format msgid "Re-scanning SR %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1492 +#: nova/virt/xenapi/vm_utils.py:1491 #, python-format msgid "Flag sr_matching_filter '%s' does not respect formatting convention" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1510 +#: nova/virt/xenapi/vm_utils.py:1509 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:1523 +#: nova/virt/xenapi/vm_utils.py:1522 msgid "Cannot find SR of content-type ISO" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1531 +#: nova/virt/xenapi/vm_utils.py:1530 #, python-format msgid "ISO: looking at SR %(sr_rec)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1533 +#: nova/virt/xenapi/vm_utils.py:1532 msgid "ISO: not iso content" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1536 +#: nova/virt/xenapi/vm_utils.py:1535 msgid "ISO: iso content_type, no 'i18n-key' key" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1539 +#: nova/virt/xenapi/vm_utils.py:1538 msgid "ISO: iso content_type, i18n-key value not 'local-storage-iso'" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1543 +#: nova/virt/xenapi/vm_utils.py:1542 msgid "ISO: SR MATCHing our criteria" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1545 +#: nova/virt/xenapi/vm_utils.py:1544 msgid "ISO: ISO, looking to see if it is host local" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1548 +#: nova/virt/xenapi/vm_utils.py:1547 #, python-format msgid "ISO: PBD %(pbd_ref)s disappeared" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1551 +#: nova/virt/xenapi/vm_utils.py:1550 #, python-format msgid "ISO: PBD matching, want %(pbd_rec)s, have %(host)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1554 +#: nova/virt/xenapi/vm_utils.py:1553 msgid "ISO: SR with local PBD" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1576 +#: nova/virt/xenapi/vm_utils.py:1575 #, 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:1592 +#: nova/virt/xenapi/vm_utils.py:1591 #, python-format msgid "Unable to obtain RRD XML updates with server details: %(server)s." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1646 +#: nova/virt/xenapi/vm_utils.py:1645 #, python-format msgid "Invalid statistics data from Xenserver: %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1706 +#: nova/virt/xenapi/vm_utils.py:1705 #, python-format msgid "VHD %(vdi_uuid)s has parent %(parent_uuid)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1793 +#: nova/virt/xenapi/vm_utils.py:1792 #, 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:1803 +#: nova/virt/xenapi/vm_utils.py:1802 #, python-format msgid "VHD coalesce attempts exceeded (%(max_attempts)d), giving up..." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1838 +#: nova/virt/xenapi/vm_utils.py:1837 #, python-format msgid "Timeout waiting for device %s to be created" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1858 +#: nova/virt/xenapi/vm_utils.py:1857 #, python-format msgid "Disconnecting stale VDI %s from compute domU" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1871 +#: nova/virt/xenapi/vm_utils.py:1870 #, python-format msgid "Plugging VBD %s ... " msgstr "" -#: nova/virt/xenapi/vm_utils.py:1874 +#: nova/virt/xenapi/vm_utils.py:1873 #, python-format msgid "Plugging VBD %s done." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1876 +#: nova/virt/xenapi/vm_utils.py:1875 #, python-format msgid "VBD %(vbd_ref)s plugged as %(orig_dev)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1879 +#: nova/virt/xenapi/vm_utils.py:1878 #, python-format msgid "VBD %(vbd_ref)s plugged into wrong dev, remapping to %(dev)s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1884 +#: nova/virt/xenapi/vm_utils.py:1883 #, python-format msgid "Destroying VBD for VDI %s ... " msgstr "" -#: nova/virt/xenapi/vm_utils.py:1892 +#: nova/virt/xenapi/vm_utils.py:1891 #, python-format msgid "Destroying VBD for VDI %s done." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1905 +#: nova/virt/xenapi/vm_utils.py:1904 #, python-format msgid "Running pygrub against %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1912 +#: nova/virt/xenapi/vm_utils.py:1911 #, python-format msgid "Found Xen kernel %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1914 +#: nova/virt/xenapi/vm_utils.py:1913 msgid "No Xen kernel found. Booting HVM." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1927 +#: nova/virt/xenapi/vm_utils.py:1926 msgid "Partitions:" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1933 +#: nova/virt/xenapi/vm_utils.py:1932 #, python-format msgid " %(num)s: %(ptype)s %(size)d sectors" msgstr "" -#: nova/virt/xenapi/vm_utils.py:1958 +#: nova/virt/xenapi/vm_utils.py:1957 #, python-format msgid "" "Writing partition table %(primary_first)d %(primary_last)d to " "%(dev_path)s..." msgstr "" -#: nova/virt/xenapi/vm_utils.py:1971 +#: nova/virt/xenapi/vm_utils.py:1970 #, python-format msgid "Writing partition table %s done." msgstr "" -#: nova/virt/xenapi/vm_utils.py:2025 +#: nova/virt/xenapi/vm_utils.py:2024 #, 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:2057 +#: nova/virt/xenapi/vm_utils.py:2056 #, python-format msgid "" "Finished sparse_copy in %(duration).2f secs, %(compression_pct).2f%% " "reduction in size" msgstr "" -#: nova/virt/xenapi/vm_utils.py:2106 +#: nova/virt/xenapi/vm_utils.py:2105 msgid "Manipulating interface files directly" msgstr "" -#: nova/virt/xenapi/vm_utils.py:2115 +#: nova/virt/xenapi/vm_utils.py:2114 #, python-format msgid "Failed to mount filesystem (expected for non-linux instances): %s" msgstr "" -#: nova/virt/xenapi/vm_utils.py:2227 +#: nova/virt/xenapi/vm_utils.py:2226 msgid "This domU must be running on the host specified by xenapi_connection_url" msgstr "" -#: nova/virt/xenapi/vmops.py:125 nova/virt/xenapi/vmops.py:673 +#: nova/virt/xenapi/vmops.py:124 nova/virt/xenapi/vmops.py:672 #, python-format msgid "Updating progress to %(progress)d" msgstr "" -#: nova/virt/xenapi/vmops.py:167 +#: nova/virt/xenapi/vmops.py:166 msgid "Error: Agent is disabled" msgstr "" -#: nova/virt/xenapi/vmops.py:235 +#: nova/virt/xenapi/vmops.py:234 msgid "Starting instance" msgstr "" -#: nova/virt/xenapi/vmops.py:304 +#: nova/virt/xenapi/vmops.py:303 msgid "Removing kernel/ramdisk files from dom0" msgstr "" -#: nova/virt/xenapi/vmops.py:376 +#: nova/virt/xenapi/vmops.py:375 #, python-format msgid "Block device information present: %s" msgstr "" -#: nova/virt/xenapi/vmops.py:407 +#: nova/virt/xenapi/vmops.py:406 msgid "Failed to spawn, rolling back" msgstr "" -#: nova/virt/xenapi/vmops.py:480 +#: nova/virt/xenapi/vmops.py:479 msgid "Detected ISO image type, creating blank VM for install" msgstr "" -#: nova/virt/xenapi/vmops.py:497 +#: nova/virt/xenapi/vmops.py:496 msgid "Auto configuring disk, attempting to resize partition..." msgstr "" -#: nova/virt/xenapi/vmops.py:523 +#: nova/virt/xenapi/vmops.py:522 msgid "Starting VM" msgstr "" -#: nova/virt/xenapi/vmops.py:529 +#: nova/virt/xenapi/vmops.py:528 msgid "Waiting for instance state to become running" msgstr "" -#: nova/virt/xenapi/vmops.py:543 +#: nova/virt/xenapi/vmops.py:542 #, python-format msgid "" "Latest agent build for %(hypervisor)s/%(os)s/%(architecture)s is " "%(version)s" msgstr "" -#: nova/virt/xenapi/vmops.py:546 +#: nova/virt/xenapi/vmops.py:545 #, python-format msgid "No agent build found for %(hypervisor)s/%(os)s/%(architecture)s" msgstr "" -#: nova/virt/xenapi/vmops.py:557 +#: nova/virt/xenapi/vmops.py:556 #, python-format msgid "Instance agent version: %s" msgstr "" -#: nova/virt/xenapi/vmops.py:584 +#: nova/virt/xenapi/vmops.py:583 msgid "Setting VCPU weight" msgstr "" -#: nova/virt/xenapi/vmops.py:592 +#: nova/virt/xenapi/vmops.py:591 #, python-format msgid "Could not find VM with name %s" msgstr "" -#: nova/virt/xenapi/vmops.py:642 +#: nova/virt/xenapi/vmops.py:641 msgid "Finished snapshot and upload for VM" msgstr "" -#: nova/virt/xenapi/vmops.py:646 +#: nova/virt/xenapi/vmops.py:645 #, python-format msgid "Migrating VHD '%(vdi_uuid)s' with seq_num %(seq_num)d" msgstr "" -#: nova/virt/xenapi/vmops.py:654 +#: nova/virt/xenapi/vmops.py:653 msgid "Failed to transfer vhd to new host" msgstr "" -#: nova/virt/xenapi/vmops.py:691 +#: nova/virt/xenapi/vmops.py:690 #, python-format msgid "Resizing down VDI %(vdi_uuid)s from %(old_gb)dGB to %(new_gb)dGB" msgstr "" -#: nova/virt/xenapi/vmops.py:697 nova/virt/xenapi/vmops.py:747 +#: nova/virt/xenapi/vmops.py:696 nova/virt/xenapi/vmops.py:746 msgid "Clean shutdown did not complete successfully, trying hard shutdown." msgstr "" -#: nova/virt/xenapi/vmops.py:819 +#: nova/virt/xenapi/vmops.py:818 #, python-format msgid "Resizing up VDI %(vdi_uuid)s from %(old_gb)dGB to %(new_gb)dGB" msgstr "" -#: nova/virt/xenapi/vmops.py:824 +#: nova/virt/xenapi/vmops.py:823 msgid "Resize complete" msgstr "" -#: nova/virt/xenapi/vmops.py:868 +#: nova/virt/xenapi/vmops.py:867 msgid "Starting halted instance found during reboot" msgstr "" -#: nova/virt/xenapi/vmops.py:959 +#: nova/virt/xenapi/vmops.py:958 msgid "Unable to find root VBD/VDI for VM" msgstr "" -#: nova/virt/xenapi/vmops.py:985 +#: nova/virt/xenapi/vmops.py:984 msgid "Destroying VDIs" msgstr "" -#: nova/virt/xenapi/vmops.py:1012 +#: nova/virt/xenapi/vmops.py:1011 msgid "Using RAW or VHD, skipping kernel and ramdisk deletion" msgstr "" -#: nova/virt/xenapi/vmops.py:1019 +#: nova/virt/xenapi/vmops.py:1018 msgid "instance has a kernel or ramdisk but not both" msgstr "" -#: nova/virt/xenapi/vmops.py:1026 +#: nova/virt/xenapi/vmops.py:1025 msgid "kernel/ramdisk files removed" msgstr "" -#: nova/virt/xenapi/vmops.py:1052 +#: nova/virt/xenapi/vmops.py:1051 msgid "Destroying VM" msgstr "" -#: nova/virt/xenapi/vmops.py:1078 +#: nova/virt/xenapi/vmops.py:1077 msgid "VM is not present, skipping destroy..." msgstr "" -#: nova/virt/xenapi/vmops.py:1129 +#: nova/virt/xenapi/vmops.py:1128 #, python-format msgid "Instance is already in Rescue Mode: %s" msgstr "" -#: nova/virt/xenapi/vmops.py:1163 +#: nova/virt/xenapi/vmops.py:1162 msgid "VM is not present, skipping soft delete..." msgstr "" -#: nova/virt/xenapi/vmops.py:1212 +#: nova/virt/xenapi/vmops.py:1211 #, python-format msgid "Found %(instance_count)d hung reboots older than %(timeout)d seconds" msgstr "" -#: nova/virt/xenapi/vmops.py:1216 +#: nova/virt/xenapi/vmops.py:1215 msgid "Automatically hard rebooting" msgstr "" -#: nova/virt/xenapi/vmops.py:1315 +#: nova/virt/xenapi/vmops.py:1314 msgid "Fetching VM ref while BUILDING failed" msgstr "" -#: nova/virt/xenapi/vmops.py:1398 +#: nova/virt/xenapi/vmops.py:1397 msgid "Injecting network info to xenstore" msgstr "" -#: nova/virt/xenapi/vmops.py:1417 +#: nova/virt/xenapi/vmops.py:1416 msgid "Creating vifs" msgstr "" -#: nova/virt/xenapi/vmops.py:1426 +#: nova/virt/xenapi/vmops.py:1425 #, python-format msgid "Creating VIF for network %(network_ref)s" msgstr "" -#: nova/virt/xenapi/vmops.py:1429 +#: nova/virt/xenapi/vmops.py:1428 #, python-format msgid "Created VIF %(vif_ref)s, network %(network_ref)s" msgstr "" -#: nova/virt/xenapi/vmops.py:1457 +#: nova/virt/xenapi/vmops.py:1456 msgid "Injecting hostname to xenstore" msgstr "" -#: nova/virt/xenapi/vmops.py:1553 +#: nova/virt/xenapi/vmops.py:1552 #, python-format msgid "" "Destination host:%(hostname)s must be in the same aggregate as the source" " server" msgstr "" -#: nova/virt/xenapi/vmops.py:1585 +#: nova/virt/xenapi/vmops.py:1584 msgid "Migrate Receive failed" msgstr "" -#: nova/virt/xenapi/vmops.py:1633 +#: nova/virt/xenapi/vmops.py:1632 msgid "VM.assert_can_migratefailed" msgstr "" -#: nova/virt/xenapi/vmops.py:1669 +#: nova/virt/xenapi/vmops.py:1668 msgid "Migrate Send failed" msgstr "" -#: nova/virt/xenapi/volume_utils.py:42 +#: nova/virt/xenapi/volume_utils.py:41 msgid "creating sr within volume_utils" msgstr "" -#: nova/virt/xenapi/volume_utils.py:45 nova/virt/xenapi/volume_utils.py:73 +#: nova/virt/xenapi/volume_utils.py:44 nova/virt/xenapi/volume_utils.py:72 #, python-format msgid "type is = %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:48 nova/virt/xenapi/volume_utils.py:76 +#: nova/virt/xenapi/volume_utils.py:47 nova/virt/xenapi/volume_utils.py:75 #, python-format msgid "name = %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:61 +#: nova/virt/xenapi/volume_utils.py:60 #, python-format msgid "Created %(label)s as %(sr_ref)s." msgstr "" -#: nova/virt/xenapi/volume_utils.py:66 nova/virt/xenapi/volume_utils.py:164 +#: nova/virt/xenapi/volume_utils.py:65 nova/virt/xenapi/volume_utils.py:163 msgid "Unable to create Storage Repository" msgstr "" -#: nova/virt/xenapi/volume_utils.py:70 +#: nova/virt/xenapi/volume_utils.py:69 msgid "introducing sr within volume_utils" msgstr "" -#: nova/virt/xenapi/volume_utils.py:93 nova/virt/xenapi/volume_utils.py:160 +#: nova/virt/xenapi/volume_utils.py:92 nova/virt/xenapi/volume_utils.py:159 #: nova/virt/xenapi/volumeops.py:150 #, python-format msgid "Introduced %(label)s as %(sr_ref)s." msgstr "" -#: nova/virt/xenapi/volume_utils.py:96 +#: nova/virt/xenapi/volume_utils.py:95 msgid "Creating pbd for SR" msgstr "" -#: nova/virt/xenapi/volume_utils.py:98 +#: nova/virt/xenapi/volume_utils.py:97 msgid "Plugging SR" msgstr "" -#: nova/virt/xenapi/volume_utils.py:106 nova/virt/xenapi/volumeops.py:154 +#: nova/virt/xenapi/volume_utils.py:105 nova/virt/xenapi/volumeops.py:154 msgid "Unable to introduce Storage Repository" msgstr "" -#: nova/virt/xenapi/volume_utils.py:117 nova/virt/xenapi/volumeops.py:46 +#: nova/virt/xenapi/volume_utils.py:116 nova/virt/xenapi/volumeops.py:46 msgid "Unable to get SR using uuid" msgstr "" -#: nova/virt/xenapi/volume_utils.py:119 +#: nova/virt/xenapi/volume_utils.py:118 #, python-format msgid "Forgetting SR %s..." msgstr "" -#: nova/virt/xenapi/volume_utils.py:127 +#: nova/virt/xenapi/volume_utils.py:126 msgid "Unable to forget Storage Repository" msgstr "" -#: nova/virt/xenapi/volume_utils.py:147 +#: nova/virt/xenapi/volume_utils.py:146 #, python-format msgid "Introducing %s..." msgstr "" -#: nova/virt/xenapi/volume_utils.py:176 +#: nova/virt/xenapi/volume_utils.py:175 #, python-format msgid "Unable to find SR from VBD %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:194 +#: nova/virt/xenapi/volume_utils.py:193 #, python-format msgid "Ignoring exception %(exc)s when getting PBDs for %(sr_ref)s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:200 +#: nova/virt/xenapi/volume_utils.py:199 #, python-format msgid "Ignoring exception %(exc)s when unplugging PBD %(pbd)s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:224 +#: nova/virt/xenapi/volume_utils.py:223 #, python-format msgid "Unable to introduce VDI on SR %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:232 +#: nova/virt/xenapi/volume_utils.py:231 #, python-format msgid "Unable to get record of VDI %s on" msgstr "" -#: nova/virt/xenapi/volume_utils.py:254 +#: nova/virt/xenapi/volume_utils.py:253 #, python-format msgid "Unable to introduce VDI for SR %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:264 +#: nova/virt/xenapi/volume_utils.py:263 #, python-format msgid "Error finding vdis in SR %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:271 +#: nova/virt/xenapi/volume_utils.py:270 #, python-format msgid "Unable to find vbd for vdi %s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:282 +#: nova/virt/xenapi/volume_utils.py:281 #, python-format msgid "Unable to obtain target information %(mountpoint)s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:310 +#: nova/virt/xenapi/volume_utils.py:309 #, python-format msgid "Unable to obtain target information %(connection_data)s" msgstr "" -#: nova/virt/xenapi/volume_utils.py:336 +#: nova/virt/xenapi/volume_utils.py:335 #, python-format msgid "Mountpoint cannot be translated: %s" msgstr "" @@ -8308,42 +8008,42 @@ msgstr "" msgid "Mountpoint %(mountpoint)s detached from instance %(instance_name)s" msgstr "" -#: nova/vnc/xvp_proxy.py:97 nova/vnc/xvp_proxy.py:102 +#: nova/vnc/xvp_proxy.py:96 nova/vnc/xvp_proxy.py:101 #, python-format msgid "Error in handshake: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:118 +#: nova/vnc/xvp_proxy.py:117 #, python-format msgid "Invalid request: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:138 +#: nova/vnc/xvp_proxy.py:137 #, python-format msgid "Request: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:141 +#: nova/vnc/xvp_proxy.py:140 #, python-format msgid "Request made with missing token: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:151 +#: nova/vnc/xvp_proxy.py:150 #, python-format msgid "Request made with invalid token: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:158 +#: nova/vnc/xvp_proxy.py:157 #, python-format msgid "Unexpected error: %s" msgstr "" -#: nova/vnc/xvp_proxy.py:178 +#: nova/vnc/xvp_proxy.py:177 #, python-format msgid "Starting nova-xvpvncproxy node (version %s)" msgstr "" -#: nova/volume/cinder.py:69 +#: nova/volume/cinder.py:68 #, python-format msgid "Cinderclient connection created using URL: %s" msgstr "" diff --git a/nova/manager.py b/nova/manager.py index 59da6155a..ca750312f 100644 --- a/nova/manager.py +++ b/nova/manager.py @@ -190,7 +190,7 @@ class Manager(base.Base): """ pass - def pre_start_hook(self): + def pre_start_hook(self, **kwargs): """Hook to provide the manager the ability to do additional start-up work before any RPC queues/consumers are created. This is called after other initialization has succeeded and a service diff --git a/nova/notifications.py b/nova/notifications.py index b5fc6917f..b1338c582 100644 --- a/nova/notifications.py +++ b/nova/notifications.py @@ -298,6 +298,7 @@ def info_from_instance(context, instance_ref, network_info, instance_id=instance_ref['uuid'], display_name=instance_ref['display_name'], reservation_id=instance_ref['reservation_id'], + hostname=instance_ref['hostname'], # Type properties instance_type=instance_type_name, diff --git a/nova/scheduler/filters/compute_capabilities_filter.py b/nova/scheduler/filters/compute_capabilities_filter.py index 73e33178f..acbfa4702 100644 --- a/nova/scheduler/filters/compute_capabilities_filter.py +++ b/nova/scheduler/filters/compute_capabilities_filter.py @@ -31,11 +31,20 @@ class ComputeCapabilitiesFilter(filters.BaseHostFilter): return True for key, req in instance_type['extra_specs'].iteritems(): - # NOTE(jogo) any key containing a scope (scope is terminated - # by a `:') will be ignored by this filter. (bug 1039386) - if key.count(':'): + # Either not scope format, or in capabilities scope + scope = key.split(':') + if len(scope) > 1 and scope[0] != "capabilities": continue - cap = capabilities.get(key, None) + elif scope[0] == "capabilities": + del scope[0] + cap = capabilities + for index in range(0, len(scope)): + try: + cap = cap.get(scope[index], None) + except AttributeError: + return False + if cap is None: + return False if not extra_specs_ops.match(cap, req): return False return True diff --git a/nova/service.py b/nova/service.py index 5657bdd7e..fe7ca29e0 100644 --- a/nova/service.py +++ b/nova/service.py @@ -400,8 +400,6 @@ class Service(object): except exception.NotFound: self._create_service_ref(ctxt) - self.manager.pre_start_hook() - if self.backdoor_port is not None: self.manager.backdoor_port = self.backdoor_port @@ -409,6 +407,8 @@ class Service(object): LOG.debug(_("Creating Consumer connection for Service %s") % self.topic) + self.manager.pre_start_hook(rpc_connection=self.conn) + rpc_dispatcher = self.manager.create_rpc_dispatcher() # Share this same connection for these Consumers diff --git a/nova/tests/api/openstack/compute/contrib/test_admin_actions.py b/nova/tests/api/openstack/compute/contrib/test_admin_actions.py index c7c4f8564..c121e3afb 100644 --- a/nova/tests/api/openstack/compute/contrib/test_admin_actions.py +++ b/nova/tests/api/openstack/compute/contrib/test_admin_actions.py @@ -249,6 +249,22 @@ class CreateBackupTests(test.TestCase): response = request.get_response(self.app) self.assertEqual(response.status_int, 400) + def test_create_backup_negative_rotation(self): + """Rotation must be greater than or equal to zero + for backup requests + """ + body = { + 'createBackup': { + 'name': 'Backup 1', + 'backup_type': 'daily', + 'rotation': -1, + }, + } + + request = self._get_request(body) + response = request.get_response(self.app) + self.assertEqual(response.status_int, 400) + def test_create_backup_no_backup_type(self): """Backup Type (daily or weekly) is required for backup requests""" body = { @@ -269,8 +285,24 @@ class CreateBackupTests(test.TestCase): response = request.get_response(self.app) self.assertEqual(response.status_int, 400) - def test_create_backup(self): - """The happy path for creating backups""" + def test_create_backup_rotation_is_zero(self): + """The happy path for creating backups if rotation is zero""" + body = { + 'createBackup': { + 'name': 'Backup 1', + 'backup_type': 'daily', + 'rotation': 0, + }, + } + + request = self._get_request(body) + response = request.get_response(self.app) + + self.assertEqual(response.status_int, 202) + self.assertFalse('Location' in response.headers) + + def test_create_backup_rotation_is_positive(self): + """The happy path for creating backups if rotation is positive""" body = { 'createBackup': { 'name': 'Backup 1', @@ -282,6 +314,7 @@ class CreateBackupTests(test.TestCase): request = self._get_request(body) response = request.get_response(self.app) + self.assertEqual(response.status_int, 202) self.assertTrue(response.headers['Location']) def test_create_backup_raises_conflict_on_invalid_state(self): diff --git a/nova/tests/scheduler/test_host_filters.py b/nova/tests/scheduler/test_host_filters.py index a052757e8..ae81c84dd 100644 --- a/nova/tests/scheduler/test_host_filters.py +++ b/nova/tests/scheduler/test_host_filters.py @@ -732,6 +732,27 @@ class HostFiltersTestCase(test.TestCase): especs={'opt1': '1', 'opt2': '222', 'trust:trusted_host': 'true'}, passes=False) + def test_compute_filter_pass_extra_specs_simple_with_scope(self): + self._do_test_compute_filter_extra_specs( + ecaps={'opt1': '1', 'opt2': '2'}, + especs={'capabilities:opt1': '1', + 'trust:trusted_host': 'true'}, + passes=True) + + def test_compute_filter_extra_specs_simple_with_wrong_scope(self): + self._do_test_compute_filter_extra_specs( + ecaps={'opt1': '1', 'opt2': '2'}, + especs={'wrong_scope:opt1': '1', + 'trust:trusted_host': 'true'}, + passes=True) + + def test_compute_filter_extra_specs_pass_multi_level_with_scope(self): + self._do_test_compute_filter_extra_specs( + ecaps={'opt1': {'a': '1', 'b': {'aa': '2'}}, 'opt2': '2'}, + especs={'opt1:a': '1', 'capabilities:opt1:b:aa': '2', + 'trust:trusted_host': 'true'}, + passes=True) + def test_aggregate_filter_passes_no_extra_specs(self): self._stub_service_is_up(True) filt_cls = self.class_map['AggregateInstanceExtraSpecsFilter']() diff --git a/nova/tests/test_libvirt.py b/nova/tests/test_libvirt.py index 1b65afc2a..aecd766cd 100644 --- a/nova/tests/test_libvirt.py +++ b/nova/tests/test_libvirt.py @@ -565,23 +565,23 @@ class LibvirtConnTestCase(test.TestCase): self.stubs.Set(libvirt_driver.disk, 'extend', fake_extend) nova.tests.image.fake.stub_out_image_service(self.stubs) + self.test_instance = { + 'memory_kb': '1024000', + 'basepath': '/some/path', + 'bridge_name': 'br100', + 'vcpus': 2, + 'project_id': 'fake', + 'bridge': 'br101', + 'image_ref': '155d900f-4e14-4e4c-a73d-069cbf4541e6', + 'root_gb': 10, + 'ephemeral_gb': 20, + 'instance_type_id': '5'} # m1.small def tearDown(self): libvirt_driver.libvirt_utils = libvirt_utils nova.tests.image.fake.FakeImageService_reset() super(LibvirtConnTestCase, self).tearDown() - test_instance = {'memory_kb': '1024000', - 'basepath': '/some/path', - 'bridge_name': 'br100', - 'vcpus': 2, - 'project_id': 'fake', - 'bridge': 'br101', - 'image_ref': '155d900f-4e14-4e4c-a73d-069cbf4541e6', - 'root_gb': 10, - 'ephemeral_gb': 20, - 'instance_type_id': '5'} # m1.small - def create_fake_libvirt_mock(self, **kwargs): """Defining mocks for LibvirtDriver(libvirt is not used).""" @@ -2162,7 +2162,7 @@ class LibvirtConnTestCase(test.TestCase): imagebackend.Image.cache(context=mox.IgnoreArg(), fetch_func=mox.IgnoreArg(), filename='otherdisk', - image_id=123456, + image_id=self.test_instance['image_ref'], project_id='fake', size=10737418240L, user_id=None).AndReturn(None) diff --git a/nova/tests/test_notifications.py b/nova/tests/test_notifications.py index 4f5adc99a..228e34dd8 100644 --- a/nova/tests/test_notifications.py +++ b/nova/tests/test_notifications.py @@ -80,6 +80,7 @@ class NotificationsTestCase(test.TestCase): inst['access_ip_v4'] = '1.2.3.4' inst['access_ip_v6'] = 'feed:5eed' inst['display_name'] = 'test_instance' + inst['hostname'] = 'test_instance_hostname' if params: inst.update(params) return db.instance_create(self.context, inst) @@ -209,6 +210,7 @@ class NotificationsTestCase(test.TestCase): access_ip_v4 = self.instance["access_ip_v4"] access_ip_v6 = self.instance["access_ip_v6"] display_name = self.instance["display_name"] + hostname = self.instance["hostname"] self.assertEquals(vm_states.BUILDING, payload["old_state"]) self.assertEquals(vm_states.ACTIVE, payload["state"]) @@ -217,6 +219,7 @@ class NotificationsTestCase(test.TestCase): self.assertEquals(payload["access_ip_v4"], access_ip_v4) self.assertEquals(payload["access_ip_v6"], access_ip_v6) self.assertEquals(payload["display_name"], display_name) + self.assertEquals(payload["hostname"], hostname) def test_task_update_with_states(self): self.flags(notify_on_state_change="vm_and_task_state") @@ -230,6 +233,7 @@ class NotificationsTestCase(test.TestCase): access_ip_v4 = self.instance["access_ip_v4"] access_ip_v6 = self.instance["access_ip_v6"] display_name = self.instance["display_name"] + hostname = self.instance["hostname"] self.assertEquals(vm_states.BUILDING, payload["old_state"]) self.assertEquals(vm_states.BUILDING, payload["state"]) @@ -238,6 +242,7 @@ class NotificationsTestCase(test.TestCase): self.assertEquals(payload["access_ip_v4"], access_ip_v4) self.assertEquals(payload["access_ip_v6"], access_ip_v6) self.assertEquals(payload["display_name"], display_name) + self.assertEquals(payload["hostname"], hostname) def test_update_no_service_name(self): notifications.send_update_with_states(self.context, self.instance, diff --git a/nova/tests/test_service.py b/nova/tests/test_service.py index eb0c12978..b5922775e 100644 --- a/nova/tests/test_service.py +++ b/nova/tests/test_service.py @@ -158,7 +158,7 @@ class ServiceTestCase(test.TestCase): self._service_start_mocks() # pre_start_hook is called after service record is created, # but before RPC consumer is created - self.manager_mock.pre_start_hook() + self.manager_mock.pre_start_hook(rpc_connection=mox.IgnoreArg()) self.manager_mock.create_rpc_dispatcher() # post_start_hook is called after RPC consumer is created. self.manager_mock.post_start_hook() diff --git a/nova/virt/disk/vfs/__init__.py b/nova/virt/disk/vfs/__init__.py new file mode 100644 index 000000000..880979c48 --- /dev/null +++ b/nova/virt/disk/vfs/__init__.py @@ -0,0 +1,19 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2012 Red Hat, Inc. +# +# 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. +""" +Operations on virtual filesystems + +""" diff --git a/nova/virt/disk/vfs/api.py b/nova/virt/disk/vfs/api.py new file mode 100644 index 000000000..7d7768bb2 --- /dev/null +++ b/nova/virt/disk/vfs/api.py @@ -0,0 +1,107 @@ +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2012 Red Hat, Inc. +# +# 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.openstack.common import log as logging + +LOG = logging.getLogger(__name__) + + +class VFS(object): + + """ + The VFS class defines an interface for manipulating files within + a virtual disk image filesystem. This allows file injection code + to avoid the assumption that the virtual disk image can be mounted + in the host filesystem. + + All paths provided to the APIs in this class should be relative + to the root of the virtual disk image filesystem. Subclasses + will translate paths as required by their implementation. + """ + def __init__(self, imgfile, imgfmt, partition): + self.imgfile = imgfile + self.imgfmt = imgfmt + self.partition = partition + + """ + Perform any one-time setup tasks to make the virtual + filesystem available to future API calls + """ + def setup(self): + pass + + """ + Release all resources initialized in the setup method + """ + def teardown(self): + pass + + """ + Create a directory @path, including all intermedia + path components if they do not already exist + """ + def make_path(self, path): + pass + + """ + Append @content to the end of the file identified + by @path, creating the file if it does not already + exist + """ + def append_file(self, path, content): + pass + + """ + Replace the entire contents of the file identified + by @path, wth @content, creating the file if it does + not already exist + """ + def replace_file(self, path, content): + pass + + """ + Return the entire contents of the file identified + by @path + """ + def read_file(self, path): + pass + + """ + Return a True if the file identified by @path + exists + """ + def has_file(self, path): + pass + + """ + Set the permissions on the file identified by + @path to @mode. The file must exist prior to + this call. + """ + def set_permissions(self, path, mode): + pass + + """ + Set the ownership on the file identified by + @path to the username @user and groupname @group. + Either of @user or @group may be None, in which case + the current ownership will be left unchanged. The + ownership must be passed in string form, allowing + subclasses to translate to uid/gid form as required. + The file must exist prior to this call. + """ + def set_ownership(self, path, user, group): + pass |