summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/source/devref/filter_scheduler.rst37
-rw-r--r--nova/api/openstack/compute/contrib/admin_actions.py16
-rw-r--r--nova/compute/manager.py4
-rw-r--r--nova/locale/nova.pot2032
-rw-r--r--nova/manager.py2
-rw-r--r--nova/notifications.py1
-rw-r--r--nova/scheduler/filters/compute_capabilities_filter.py17
-rw-r--r--nova/service.py4
-rw-r--r--nova/tests/api/openstack/compute/contrib/test_admin_actions.py37
-rw-r--r--nova/tests/scheduler/test_host_filters.py21
-rw-r--r--nova/tests/test_libvirt.py24
-rw-r--r--nova/tests/test_notifications.py5
-rw-r--r--nova/tests/test_service.py2
-rw-r--r--nova/virt/disk/vfs/__init__.py19
-rw-r--r--nova/virt/disk/vfs/api.py107
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